:root{--bg: #f4f6fb;--surface: #ffffff;--border: #e4e8f0;--text: #1c2333;--muted: #6b7489;--primary: #4f46e5;--primary-dark: #4338ca;--primary-soft: #eef0ff;--green: #16a34a;--green-soft: #e3f6ea;--amber: #d97706;--amber-soft: #fdf0d9;--red: #dc2626;--red-soft: #fde7e7;--blue: #2563eb;--blue-soft: #e4edff;--radius: 14px;--shadow: 0 1px 2px rgba(20, 30, 60, .05), 0 4px 14px rgba(20, 30, 60, .05);--sidebar-w: 232px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);font-size:15px;line-height:1.45}h1,h2,p{margin:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.app{display:flex;min-height:100%}.main{flex:1;min-width:0;display:flex;flex-direction:column}.content{flex:1;padding:24px 32px 40px}.page{max-width:1180px;margin:0 auto}.page-head{margin-bottom:20px}.page-head h1{font-size:28px;letter-spacing:-.02em}.muted{color:var(--muted);margin-top:4px}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);padding:20px 14px;position:sticky;top:0;height:100vh}.logo{display:flex;align-items:center;gap:10px;padding:4px 10px 22px;font-weight:700;font-size:18px}.logo-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--primary);color:#fff}.nav{display:flex;flex-direction:column;gap:4px}.nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border:0;border-radius:10px;background:transparent;color:var(--muted);font-weight:500;text-align:left}.nav-item:hover{background:var(--bg);color:var(--text)}.nav-item.active{background:var(--primary-soft);color:var(--primary)}.topbar{display:flex;align-items:center;gap:20px;padding:14px 32px;background:var(--surface);border-bottom:1px solid var(--border)}.topbar-hello{display:flex;flex-direction:column;flex:1;min-width:0}.topbar-welcome{font-weight:600}.topbar-date{color:var(--muted);font-size:13px}.search{display:flex;align-items:center;gap:8px;width:280px;padding:8px 12px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--muted)}.search input{flex:1;min-width:0;border:0;background:transparent;outline:none}.search:focus-within{border-color:var(--primary)}.avatar{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--primary);color:#fff;font-weight:600;flex-shrink:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.card h2{font-size:17px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.stat-card{display:flex;align-items:center;gap:14px;padding:18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.stat-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:12px}.tone-blue .stat-icon{background:var(--blue-soft);color:var(--blue)}.tone-green .stat-icon{background:var(--green-soft);color:var(--green)}.tone-amber .stat-icon{background:var(--amber-soft);color:var(--amber)}.tone-red .stat-icon{background:var(--red-soft);color:var(--red)}.stat-value{font-size:26px;font-weight:700;line-height:1.1}.stat-label{color:var(--muted);font-size:13px}.columns{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;align-items:start}.side-column{display:flex;flex-direction:column;gap:20px}.task-list{list-style:none;margin:0;padding:0}.task{display:flex;align-items:center;gap:14px;padding:12px 0;border-top:1px solid var(--border)}.task:first-child{border-top:0}.task-check{width:18px;height:18px;flex-shrink:0;accent-color:var(--primary);cursor:pointer}.task-body{flex:1;min-width:0}.task-title{font-weight:600}.task.is-done .task-title{color:var(--muted);font-weight:500;text-decoration-line:line-through;text-decoration-thickness:2px;text-decoration-color:currentColor}.task-meta{display:flex;flex-wrap:wrap;gap:4px 12px;color:var(--muted);font-size:13px;margin-top:2px}.task-subject{color:var(--primary);font-weight:500}.task.is-overdue .task-due{color:var(--red);font-weight:500}.task-badges{display:flex;gap:8px;flex-shrink:0}.empty{padding:36px 0;text-align:center;color:var(--muted)}.empty.small{padding:16px 0 4px}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.badge .dot{width:7px;height:7px;border-radius:50%;background:currentColor}.priority-high{background:var(--red-soft);color:var(--red)}.priority-medium{background:var(--amber-soft);color:var(--amber)}.priority-low{background:var(--green-soft);color:var(--green)}.status-todo{background:#eceff5;color:#4a5368}.status-in_progress{background:var(--blue-soft);color:var(--blue)}.status-done{background:var(--green-soft);color:var(--green)}.status-overdue{background:var(--red-soft);color:var(--red)}.deadlines,.guide{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:14px}.deadline{display:flex;gap:12px;align-items:center}.deadline-date{min-width:58px;padding:6px 8px;border-radius:10px;background:var(--primary-soft);color:var(--primary);font-size:13px;font-weight:600;text-align:center}.deadline-date.late{background:var(--red-soft);color:var(--red)}.deadline-title{font-weight:500}.deadline-rel{color:var(--muted);font-size:13px}.deadline-rel.late{color:var(--red)}.guide li{display:flex;flex-direction:column;align-items:flex-start;gap:4px;color:var(--muted);font-size:14px}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border:1px solid var(--border);border-radius:10px;background:var(--surface);font-weight:600}.btn:hover{background:var(--bg)}.btn-primary{border-color:var(--primary);background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.icon-btn{display:grid;place-items:center;width:34px;height:34px;border:0;border-radius:8px;background:transparent;color:var(--muted);flex-shrink:0}.icon-btn:hover{background:var(--bg);color:var(--red)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:16px;background:#141a2c73}.modal{width:100%;max-width:480px;max-height:100%;overflow:auto;padding:22px;border-radius:16px;background:var(--surface);box-shadow:0 20px 50px #0a0f284d}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.modal-head h2{font-size:20px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;flex:1}.field>span{font-size:13px;font-weight:600;color:var(--muted)}.field input,.field select,.field textarea{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.field textarea{resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.field-row{display:flex;gap:12px}.form-error{margin-bottom:12px;color:var(--red);font-size:14px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:6px}@media (max-width: 1024px){.sidebar{width:72px;padding:20px 10px}.logo{justify-content:center;padding-left:0;padding-right:0}.logo-text,.nav-label{display:none}.nav-item{justify-content:center;padding:12px}.content{padding:20px}.topbar{padding:12px 20px}.stats{grid-template-columns:repeat(2,1fr)}.columns{grid-template-columns:1fr}}@media (max-width: 640px){.app{flex-direction:column-reverse}.sidebar{position:fixed;inset:auto 0 0 0;z-index:40;width:100%;height:auto;padding:6px 8px calc(6px + env(safe-area-inset-bottom));border-right:0;border-top:1px solid var(--border)}.logo{display:none}.nav{flex-direction:row;justify-content:space-around}.nav-item{flex:1}.main{padding-bottom:70px}.topbar{flex-wrap:wrap;gap:10px 12px}.topbar-hello{order:1;flex:1 1 60%}.avatar{order:2}.search{order:3;width:100%}.content{padding:16px 14px 24px}.page-head h1{font-size:23px}.stats{gap:10px}.stat-card{padding:12px;gap:10px}.stat-icon{width:36px;height:36px}.stat-value{font-size:22px}.task{flex-wrap:wrap;row-gap:8px}.task-body{flex:1 1 calc(100% - 90px)}.task-badges{order:3;width:100%;padding-left:32px}.field-row{flex-direction:column;gap:0}}.calendar-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.calendar-shell{padding:18px}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}.calendar-period{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.calendar-period h2{margin-left:8px;font-size:20px;text-transform:capitalize}.calendar-views{display:flex;padding:3px;gap:2px;border:1px solid var(--border);border-radius:10px;background:var(--bg)}.calendar-views button{border:0;background:transparent;color:var(--muted);padding:7px 12px;border-radius:7px;font-weight:600}.calendar-views button.selected{color:var(--primary);background:var(--surface);box-shadow:var(--shadow)}.calendar-filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-bottom:16px;border-bottom:1px solid var(--border)}.calendar-filters input:not([type=checkbox]),.calendar-filters select{min-height:38px;border:1px solid var(--border);border-radius:9px;padding:7px 10px;background:var(--surface)}.calendar-search{flex:1;min-width:180px}.calendar-check{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:13px}.calendar-check input,.calendar-complete input,.agenda-done input{accent-color:var(--primary)}.calendar-filter-reset{min-height:38px;padding:7px 11px;font-size:12px}.calendar-filter-count{color:var(--muted);font-size:12px;white-space:nowrap}.calendar-notice{margin:12px 0;color:var(--red);font-size:13px}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));margin-top:12px;border-top:1px solid var(--border);border-left:1px solid var(--border)}.month-weekday{padding:9px 5px;text-align:center;color:var(--muted);font-size:12px;font-weight:700;border-right:1px solid var(--border)}.month-cell{position:relative;min-height:112px;padding:6px;border-right:1px solid var(--border);border-top:1px solid var(--border);min-width:0}.month-cell.outside{background:#fafbfe}.month-cell.outside .month-date{color:#a6adbb}.month-cell.is-today{background:var(--primary-soft)}.month-date{border:0;background:transparent;border-radius:7px;min-width:26px;height:26px;font-weight:700}.month-cell.is-today .month-date{background:var(--primary);color:#fff}.month-events{display:flex;flex-direction:column;gap:3px;margin-top:4px}.cal-event{display:flex;align-items:center;gap:5px;width:100%;min-width:0;border:0;border-left:3px solid var(--event-color,var(--primary));border-radius:4px;background:color-mix(in srgb,var(--event-color,var(--primary)) 11%,white);color:var(--text);text-align:left;padding:4px 5px;font-size:11px;overflow:hidden}.cal-event:hover{filter:brightness(.97)}.cal-event-time{flex-shrink:0;color:var(--muted);font-size:10px}.cal-event-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.cal-event-tag{margin-left:auto;color:var(--muted);font-size:10px}.more-events{padding-left:5px;color:var(--muted);font-size:11px}.cell-add{position:absolute;top:6px;right:6px;border:0;border-radius:6px;width:24px;height:24px;color:var(--muted);background:transparent;opacity:0}.month-cell:hover .cell-add{opacity:1}.time-grid-wrap{overflow-x:auto;margin-top:14px}.time-grid{min-width:560px}.time-head{display:grid;grid-template-columns:54px repeat(var(--day-count),minmax(0,1fr));position:sticky;top:0;background:var(--surface);z-index:2}.time-head>div{padding:10px 4px;text-align:center;font-weight:700;border-bottom:1px solid var(--border);border-left:1px solid var(--border)}.time-head .today-head{color:var(--primary);background:var(--primary-soft)}.time-body{display:grid;grid-template-columns:54px repeat(var(--day-count),minmax(0,1fr))}.time-labels>div{height:56px;padding:0 6px;transform:translateY(-8px);color:var(--muted);font-size:11px;text-align:right}.time-day{position:relative;height:1120px;border-left:1px solid var(--border);background:repeating-linear-gradient(to bottom,transparent 0,transparent 55px,var(--border) 55px,var(--border) 56px)}.time-slot{display:block;width:100%;height:56px;border:0;border-bottom:1px solid transparent;background:transparent}.time-slot:hover{background:var(--primary-soft)}.time-event{position:absolute;left:3px;right:3px;z-index:1;overflow:hidden}.time-event .cal-event{height:100%;align-items:flex-start;flex-direction:column;gap:1px;font-size:11px}.agenda-list{display:flex;flex-direction:column;margin-top:10px}.agenda-row{display:flex;align-items:flex-start;gap:18px;padding:14px 4px;border-bottom:1px solid var(--border)}.agenda-date{width:90px;flex-shrink:0;color:var(--text);font-weight:700;font-size:13px}.agenda-date span{display:block;color:var(--muted);font-weight:400}.agenda-details{flex:1;min-width:0}.agenda-title{border:0;padding:0;background:transparent;font-weight:700;text-align:left}.agenda-details p,.agenda-details small{display:block;color:var(--muted);font-size:12px;margin-top:3px}.agenda-done{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:12px}.calendar-empty{padding:24px 0 8px}.calendar-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:18px;padding-top:14px;border-top:1px solid var(--border)}.calendar-legend,.calendar-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.calendar-legend span{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:11px}.calendar-legend i{width:8px;height:8px;border-radius:50%}.calendar-tools .btn{font-size:12px;padding:7px 10px}.calendar-hint{color:var(--muted);font-size:11px;margin-top:10px}.calendar-modal{max-width:560px}.calendar-complete{display:flex;align-items:center;gap:8px;margin:2px 0 14px;font-size:13px;color:var(--muted)}.color-field input{width:58px;height:36px;padding:3px}.btn-danger{color:var(--red);border-color:#f2caca}.modal-spacer{flex:1}@media (max-width:800px){.calendar-heading{align-items:flex-start}.month-cell{min-height:88px;padding:4px}.cal-event{padding:3px}.cal-event-time{display:none}.calendar-tools{width:100%}}@media (max-width:560px){.calendar-shell{padding:12px}.calendar-heading{flex-direction:column}.calendar-heading>.btn{width:100%;justify-content:center}.calendar-period{width:100%}.calendar-period h2{flex:1;font-size:16px}.calendar-views{width:100%}.calendar-views button{flex:1;padding:7px 4px;font-size:12px}.calendar-filters>*{width:100%}.month-cell{min-height:66px}.month-weekday{font-size:10px}.month-events{gap:2px}.cal-event{border-left-width:2px}.cal-event-name{font-size:9px}.month-cell .cal-event:nth-child(n+2){display:none}.cell-add{display:none}.agenda-row{gap:9px}.agenda-date{width:68px;font-size:11px}.calendar-tools .btn{flex:1;justify-content:center}.field-row{flex-direction:column;gap:0}}.search-wrap{position:relative;flex:0 1 320px;width:320px;z-index:30}.search-wrap .search{width:100%;box-sizing:border-box}.search-clear{border:0;background:transparent;color:var(--muted);font-size:20px;line-height:1;cursor:pointer;padding:0 2px}.search-results{position:absolute;top:calc(100% + 8px);left:0;right:0;max-height:360px;overflow-y:auto;padding:6px;border:1px solid var(--border);border-radius:12px;background:var(--surface);box-shadow:0 12px 32px #00000024}.search-result{display:flex;align-items:center;gap:10px;width:100%;padding:10px;border:0;border-radius:8px;background:transparent;color:var(--text);text-align:left;cursor:pointer}.search-result:hover,.search-result:focus-visible{background:var(--bg);outline:none}.search-result-icon{display:grid;place-items:center;width:30px;height:30px;flex:0 0 30px;border-radius:8px;background:var(--primary-soft);color:var(--primary)}.search-result-text{display:flex;flex-direction:column;min-width:0;gap:3px}.search-result-text strong,.search-result-text small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-result-text strong{font-size:13px}.search-result-text small,.search-empty{color:var(--muted);font-size:12px}.search-empty{margin:0;padding:14px 10px}@media (max-width: 640px){.search-wrap{flex:1 1 160px;width:auto}.topbar{gap:10px;padding-left:14px;padding-right:14px}.topbar-hello{display:none}}.cal-event.is-completed{--event-color: #16a34a;background:#dcfce7;color:#166534}.cal-event.is-completed .cal-event-name{color:#166534;text-decoration-line:line-through;text-decoration-thickness:2px;text-decoration-color:currentColor;opacity:1}.cal-event.is-completed .cal-event-time,.cal-event.is-completed .cal-event-tag{color:#15803d}.agenda-row.is-completed{background:#f0fdf4;border-radius:8px;padding-left:10px;padding-right:10px}.agenda-title.is-completed{color:#15803d;text-decoration-line:line-through;text-decoration-thickness:2px;text-decoration-color:currentColor}.agenda-row.is-completed .agenda-details p,.agenda-row.is-completed .agenda-details small,.agenda-row.is-completed .agenda-date,.agenda-row.is-completed .agenda-date span{color:#16a34a}
