@import "https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500&family=Outfit:wght@300;400;500&display=swap";:root{--bg:#080a0e;--surface:#0d1017;--surface2:#131820;--border:#ffffff0f;--border2:#ffffff1c;--text:#dde3ee;--muted:#5a6278;--accent:#c8a96e;--r:8px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);height:100vh;font-family:Outfit,sans-serif;overflow:hidden}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:4px}.app{flex-direction:column;height:100vh;display:flex;overflow:hidden}.header{border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:100;background:#080a0ef0;flex-shrink:0;justify-content:space-between;align-items:center;padding:13px 24px;display:flex}.header-left{align-items:baseline;gap:12px;display:flex}.logo{color:var(--accent);letter-spacing:.01em;font-family:Playfair Display,serif;font-size:17px;font-weight:400}.header-sub{color:var(--muted);letter-spacing:.05em;font-size:11px;font-weight:300}.header-right{align-items:center;gap:18px;display:flex}.zoom-controls{align-items:center;gap:4px;display:flex}.zoom-btn{border:1px solid var(--border2);color:var(--muted);cursor:pointer;background:0 0;border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;font-family:Outfit,sans-serif;font-size:15px;transition:background .15s,color .15s;display:flex}.zoom-btn:hover{color:var(--text);background:#ffffff0f}.zoom-label{color:var(--muted);text-align:center;min-width:36px;font-size:11px}.sync-status{color:var(--muted);align-items:center;gap:7px;font-size:11px;display:flex}.sync-dot{background:var(--muted);border-radius:50%;width:6px;height:6px;transition:background .3s}.sync-dot.ok{background:#86c07a}.sync-dot.loading{background:var(--accent);animation:1s infinite pulse}.sync-dot.error{background:#c07a7a}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.login-screen{background:radial-gradient(#c8a96e0a 0%,#0000 60%);flex:1;justify-content:center;align-items:center;display:flex}.login-card{background:var(--surface);border:1px solid var(--border2);text-align:center;border-radius:16px;width:100%;max-width:400px;padding:40px 48px}.login-title{color:var(--accent);margin-bottom:10px;font-family:Playfair Display,serif;font-size:26px}.login-desc{color:var(--muted);margin-bottom:28px;font-size:13px;line-height:1.75}.login-btn{border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:#c8a96e1f;border-radius:10px;align-items:center;gap:10px;padding:12px 28px;font-family:Outfit,sans-serif;font-size:14px;font-weight:500;transition:background .2s,transform .1s;display:inline-flex}.login-btn:hover{background:#c8a96e38;transform:translateY(-1px)}.login-note{color:var(--muted);margin-top:16px;font-size:11px;line-height:1.6}.canvas-area{flex:1;position:relative;overflow:hidden}.panel{background:var(--surface);border-left:1px solid var(--border);z-index:50;flex-direction:column;width:290px;transition:transform .36s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;top:0;bottom:0;right:0;transform:translate(100%)}.panel.open{transform:translate(0)}.panel-head{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:10px;padding:20px 20px 16px;display:flex}.panel-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:4px;font-size:10px}.panel-title{font-family:Playfair Display,serif;font-size:19px;font-weight:400;line-height:1.25}.panel-close{border:1px solid var(--border2);color:var(--muted);cursor:pointer;background:0 0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;font-size:13px;transition:background .15s;display:flex}.panel-close:hover{color:var(--text);background:#ffffff0d}.panel-body{flex:1;padding:16px 20px;overflow-y:auto}.panel-section{margin-bottom:20px}.panel-section-title{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;font-size:10px}.panel-loading{color:var(--muted);padding:8px 0;font-size:12px}.link-row{border-radius:var(--r);border:1px solid var(--border);background:#ffffff04;align-items:center;gap:9px;margin-bottom:5px;padding:8px 10px;transition:background .15s;display:flex}.link-row:hover{background:#ffffff0a}.link-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.link-label{color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.link-btns{flex-shrink:0;align-items:center;gap:4px;display:flex}.link-badge{color:var(--muted);background:var(--surface2);border-radius:8px;padding:2px 7px;font-size:10px}.link-btn{border:1px solid var(--border2);color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border-radius:5px;padding:2px 8px;font-family:Outfit,sans-serif;font-size:10px;transition:background .15s,color .15s}.link-btn:hover{color:var(--text);background:#ffffff0f}.link-btn.primary{border-color:var(--accent);color:var(--accent)}.link-btn.primary:hover{background:#c8a96e1f}.panel-tabs{border-bottom:1px solid var(--border);flex-shrink:0;display:flex}.panel-tab{color:var(--muted);cursor:pointer;letter-spacing:.04em;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:10px 0;font-family:Outfit,sans-serif;font-size:12px;font-weight:500;transition:color .15s,border-color .15s}.panel-tab:hover{color:var(--text)}.panel-tab.active{color:var(--tab-color,var(--accent));border-bottom-color:var(--tab-color,var(--accent))}.task-row{border-radius:var(--r);border:1px solid var(--border);background:#ffffff04;align-items:flex-start;gap:10px;margin-bottom:5px;padding:8px 10px;transition:background .15s;display:flex}.task-row:hover{background:#ffffff0a}.task-check{border:1.5px solid;border-radius:50%;flex-shrink:0;width:14px;height:14px;margin-top:2px}.task-content{flex:1;min-width:0}.task-title{word-break:break-word;font-size:12px;line-height:1.5}.task-important{font-size:10px}.task-due{color:var(--muted);margin-top:2px;font-size:10px}.task-note{color:var(--muted);margin-top:3px;font-size:11px;line-height:1.4}.schedule-panel{background:var(--surface);border-right:1px solid var(--border);z-index:50;flex-direction:column;width:280px;transition:transform .36s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;top:0;bottom:0;left:0;transform:translate(-100%)}.schedule-panel.open{transform:translate(0)}.schedule-head{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:10px;padding:20px 20px 16px;display:flex}.schedule-title{color:var(--text);font-family:Playfair Display,serif;font-size:17px;font-weight:400}.schedule-body{flex:1;padding:14px 16px;overflow-y:auto}.schedule-group{margin-bottom:20px}.schedule-group-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);align-items:center;gap:6px;margin-bottom:8px;font-size:11px;display:flex}.schedule-group-label.overdue{color:#c07a7a}.schedule-count{background:var(--surface2);border-radius:8px;padding:1px 6px;font-size:10px}.schedule-task{border-radius:var(--r);border:1px solid var(--border);background:#ffffff04;align-items:flex-start;gap:8px;margin-bottom:4px;padding:7px 10px;transition:background .15s;display:flex}.schedule-task:hover{background:#ffffff0a}.schedule-task-left{flex-shrink:0;margin-top:2px}.schedule-task-title{color:var(--text);font-size:13px;line-height:1.4}.schedule-task-list{color:var(--muted);margin-top:2px;font-size:11px}.schedule-task-right{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:2px;margin-left:auto;display:flex}.schedule-star{color:var(--accent);font-size:10px}.schedule-due{color:var(--muted);white-space:nowrap;font-size:11px}.schedule-toggle-btn{border:1px solid var(--border2);color:var(--muted);cursor:pointer;background:0 0;border-radius:6px;justify-content:center;align-items:center;width:30px;height:26px;margin-right:8px;font-size:13px;transition:background .15s,color .15s;display:flex}.schedule-toggle-btn:hover{color:var(--text);background:#ffffff0f}.schedule-toggle-btn.active{border-color:var(--accent);color:var(--accent);background:#c8a96e14}.calendar-bar{background:var(--surface);border-top:1px solid var(--border);z-index:50;max-height:36px;transition:max-height .35s cubic-bezier(.4,0,.2,1);position:absolute;bottom:0;left:0;right:0;overflow:hidden}.calendar-bar.open{max-height:33vh;overflow-y:auto}.calendar-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;height:36px;padding:8px 20px;display:flex}.calendar-toggle:hover{background:#ffffff08}.calendar-toggle-icon{font-size:14px}.calendar-toggle-label{color:var(--muted);flex:1;font-size:12px}.calendar-toggle-arrow{color:var(--muted);font-size:10px}.calendar-content{padding:0 16px 8px}.calendar-nav{justify-content:space-between;align-items:center;padding:4px 0 8px;display:flex}.cal-nav-btn{border:1px solid var(--border2);color:var(--muted);cursor:pointer;background:0 0;border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;font-size:16px;transition:background .15s;display:flex}.cal-nav-btn:hover{color:var(--text);background:#ffffff0f}.cal-month-label{color:var(--text);font-size:13px;font-weight:500}.cal-grid{grid-template-columns:repeat(7,1fr);gap:1px;display:grid}.cal-dow{text-align:center;color:var(--muted);letter-spacing:.04em;padding:2px 0;font-size:10px}.cal-cell{cursor:pointer;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;height:28px;padding:1px;transition:background .12s;display:flex;position:relative}.cal-cell:hover{background:#ffffff0d}.cal-cell.empty{cursor:default}.cal-cell.today .cal-day-num{background:var(--accent);color:#080a0e;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-weight:500;display:flex}.cal-cell.selected{background:#ffffff12}.cal-day-num{color:var(--text);font-size:10px;line-height:1}.cal-dots{flex-wrap:wrap;justify-content:center;gap:2px;margin-top:2px;display:flex}.cal-dot{border-radius:50%;width:4px;height:4px}.cal-dot.event{background:var(--accent)}.cal-dot.task{background:0 0;border:1px dashed #7eb8c9}.cal-dot.task.important{background:#c084a0;border:none}.cal-day-detail{background:var(--surface2);border-radius:var(--border-radius-lg);border:1px solid var(--border);margin-top:12px;padding:12px 14px}.cal-detail-title{color:var(--text);margin-bottom:10px;font-size:13px;font-weight:500}.cal-detail-section{margin-bottom:10px}.cal-detail-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-size:10px}.cal-event-row{align-items:baseline;gap:8px;margin-bottom:4px;display:flex}.cal-event-time{color:var(--accent);flex-shrink:0;font-size:11px}.cal-event-title{color:var(--text);font-size:12px}.cal-task-row{align-items:baseline;gap:6px;margin-bottom:4px;display:flex}.cal-star{color:var(--accent);font-size:10px}.cal-task-title{color:var(--text);flex:1;font-size:12px}.cal-task-list{color:var(--muted);font-size:10px}.cal-empty-day{color:var(--muted);font-size:12px}.cal-loading{color:var(--muted);text-align:center;padding:8px 0;font-size:12px}.schedule-check-btn{cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.check-mark{color:#86c07a;font-size:8px}.schedule-task.completing{opacity:.5;transition:opacity .3s}.add-task-row{gap:6px;margin-bottom:14px;display:flex}.add-task-input{background:var(--surface2);border-radius:var(--border-radius-md);color:var(--text);border:1px solid;outline:none;flex:1;padding:7px 10px;font-family:Outfit,sans-serif;font-size:12px}.add-task-input::placeholder{color:var(--muted)}.add-task-btn{border-radius:var(--border-radius-md);cursor:pointer;background:0 0;border:1px solid;width:32px;font-family:Outfit,sans-serif;font-size:18px;transition:background .15s}.add-task-btn:hover:not(:disabled){background:#ffffff0f}.add-task-btn:disabled{opacity:.4;cursor:default}.schedule-panel-inner{flex-direction:column;height:calc(100% - 62px);display:flex;overflow:hidden}.schedule-tasks-section{border-bottom:1px solid var(--border);flex:3;padding:14px 16px 8px;overflow-y:auto}.schedule-cal-section{flex-direction:column;flex:2;gap:6px;padding:10px 14px 12px;display:flex;overflow:hidden}.mini-cal-header{align-items:center;gap:4px;display:flex}.mini-cal-month{text-align:center;color:var(--text);flex:1;font-size:12px;font-weight:500}.mini-cal-expand{border:1px solid var(--border2);color:var(--muted);cursor:pointer;background:0 0;border-radius:5px;justify-content:center;align-items:center;width:22px;height:22px;font-size:11px;display:flex}.mini-cal-expand:hover{color:var(--text);background:#ffffff0f}.mini-cal-grid{flex:1;grid-template-columns:repeat(7,1fr);gap:1px;display:grid}.mini-cal-dow{text-align:center;color:var(--muted);padding:1px 0;font-size:9px}.mini-cal-cell{cursor:pointer;height:22px;color:var(--text);border-radius:4px;flex-direction:column;justify-content:center;align-items:center;font-size:10px;transition:background .12s;display:flex;position:relative}.mini-cal-cell:hover{background:#ffffff0f}.mini-cal-cell.empty{cursor:default}.mini-cal-cell.today{color:var(--accent);background:#c8a96e26;font-weight:500}.mini-cal-cell.has-items{color:var(--text)}.mini-cal-dots{gap:1px;margin-top:1px;display:flex}.cal-modal-overlay{z-index:200;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.cal-modal{background:var(--surface);border:1px solid var(--border2);border-radius:var(--border-radius-xl);width:min(520px,92vw);max-height:85vh;padding:24px;overflow-y:auto}.cal-modal-head{align-items:center;gap:8px;margin-bottom:16px;display:flex}.cal-modal-title{text-align:center;color:var(--text);flex:1;font-family:Playfair Display,serif;font-size:18px}.cal-modal-grid{grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:16px;display:grid}
