@font-face{font-family:NanumSquareNeo;src:url(/assets/NanumSquareNeo-aLt-BVjXPT_o.ttf) format("truetype")}@font-face{font-family:appleSDNeo-Light;src:url(/assets/AppleSDGothicNeo-Light-BPXrP0oP.ttf) format("truetype")}:root{--color-primary: #ffffffce;--color-primary-dim: rgba(255, 255, 255, .25);--color-primary-hover: rgba(74, 158, 255, .5);--color-accent: #7b5cf6;--color-bg: #161616;--color-bg-surface: rgba(255, 255, 255, .05);--color-bg-elevated: #1e1e2e;--color-bg-hover: rgba(255, 255, 255, .07);--color-bg-category: rgba(0, 0, 0, .15);--color-bg-profile: rgba(255, 255, 255, .03);--color-bg-calendar-day-btn: rgba(255, 255, 255, .04);--color-border: rgba(255, 255, 255, .08);--color-border-focus: rgb(255, 255, 255);--color-border-today: #00fff2;--color-border-calendar-day-btn: rgba(105, 105, 105, .5);--color-border-timeline: #252525;--color-border-timeline-major: #2c2c2c;--color-text: rgba(255, 255, 255, .87);--color-text-light: rgba(255, 255, 255, .5);--color-text-secondary: #a0a0a0;--color-text-muted: #666;--color-text-done: #888;--color-danger: #ff6b6b;--color-danger-dim: rgba(255, 107, 107, .12);--auth-page-width: 100%;--todo-tab-width: 50%;--todo-tab-height: 750px;--todo-popup-height: 40%;--todo-tabs-bar-height: 44px;font-family:appleSDNeo-Light,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:var(--color-text);background-color:var(--color-bg);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button:hover{border-color:#646cff}button:focus,button:active{outline:none}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}[data-theme=light]{--color-primary: rgba(0, 0, 0, .87);--color-primary-dim: rgba(0, 0, 0, .05);--color-primary-hover: rgba(74, 158, 255, .2);--color-accent: #7b5cf6;--color-bg: #ffffff;--color-bg-surface: rgba(210, 210, 210, .04);--color-bg-elevated: #ffffff;--color-bg-hover: rgba(0, 0, 0, .06);--color-bg-category: rgba(212, 212, 212, .15);--color-bg-profile: rgba(0, 0, 0, .03);--color-bg-calendar-day-btn: rgba(0, 0, 0, .04);--color-border: rgb(210, 210, 210);--color-border-focus: rgba(0, 0, 0, .8);--color-border-today: #00b4ab;--color-border-calendar-day-btn: rgba(0, 0, 0, .25);--color-border-timeline: #a7a7a7;--color-border-timeline-major: #555555;--color-text: rgba(113, 113, 113, .87);--color-text-light: rgba(75, 75, 75, .5);--color-text-secondary: #555555;--color-text-muted: #5d5d5dee;--color-text-done: #bbbbbb;--color-danger: #e53e3e;--color-danger-dim: rgba(229, 62, 62, .1);color-scheme:light;color:#000000de;background-color:#fff}[data-theme=light] a:hover{color:#747bff}input{font-family:appleSDNeo-Light,sans-serif}@media(max-width:700px){:root{--todo-tab-width: 100%;--todo-tab-height: 100%;--todo-tabs-bar-height: 60px}}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem;width:var(--auth-page-width)}.auth-card{width:100%;max-width:380px;padding:2rem;background:#ffffff0f;border-radius:16px;border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 32px #0000004d}.auth-card h1{margin:0 0 .25rem;font-size:1.75rem;font-weight:700;color:var(--color-text);text-align:center}.auth-sub{margin:0 0 1.5rem;font-size:.95rem;color:var(--color-text-secondary);text-align:center}.auth-form{display:flex;flex-direction:column;gap:1rem}.auth-form label{display:flex;flex-direction:column;gap:.35rem;font-size:.9rem;color:var(--color-text-secondary)}.auth-form input{padding:.7rem .9rem;font-size:1rem;border:1px solid rgba(255,255,255,.15);border-radius:10px;background:#ffffff0f;color:var(--color-text) outline: none;transition:border-color .2s,box-shadow .2s}.auth-form input::placeholder{color:#666}.auth-form input:focus{border-color:#4a9eff;box-shadow:0 0 0 2px #4a9eff33}.auth-form button{margin-top:.5rem;padding:.75rem 1rem;font-size:1rem;font-weight:600;color:#fff;background:linear-gradient(135deg,#4a9eff,#357abd);border:none;border-radius:10px;cursor:pointer;transition:opacity .2s,transform .1s}.auth-form button:hover:not(:disabled){opacity:.95;transform:translateY(1px)}.auth-form button:disabled{opacity:.7;cursor:not-allowed}.auth-error{margin:0;padding:.5rem .75rem;font-size:.9rem;color:#ff6b6b;background:#ff6b6b26;border-radius:8px}.auth-link{margin:1.25rem 0 0;font-size:.9rem;color:#a0a0a0;text-align:center}.auth-link a{color:#4a9eff;font-weight:500}.auth-link a:hover{text-decoration:underline}.auth-divider{display:flex;align-items:center;margin:1.25rem 0 1rem;gap:.75rem}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:#ffffff1f}.auth-divider span{font-size:.8rem;color:#666;white-space:nowrap}.kakao-login-btn{width:100%;padding:.75rem 1rem;font-size:.95rem;font-weight:600;color:#3c1e1e;background:#fee500;border:none;border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.5rem;transition:background .2s,transform .1s}.kakao-login-btn:hover{background:#f0d900;transform:translateY(1px)}.kakao-login-btn:active{transform:translateY(2px)}.kakao-loading{display:flex;justify-content:center;gap:.4rem;margin-top:1.5rem}.kakao-loading span{width:8px;height:8px;border-radius:50%;background:#fee500;animation:kakao-bounce 1.2s ease-in-out infinite}.kakao-loading span:nth-child(2){animation-delay:.2s}.kakao-loading span:nth-child(3){animation-delay:.4s}@keyframes kakao-bounce{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.home-page{min-height:100vh;background:linear-gradient(135deg,#1a1a2e,#16213e)}.home-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;border-bottom:1px solid rgba(255,255,255,.08)}.home-header h1{margin:0;font-size:1.35rem;color:#e8e8e8}.logout-btn{padding:.5rem 1rem;font-size:.9rem;color:#a0a0a0;background:transparent;border:1px solid rgba(255,255,255,.15);border-radius:8px;cursor:pointer}.logout-btn:hover{color:#fff;border-color:#ffffff4d}.home-main{padding:2rem 1.5rem}.welcome{margin:0;font-size:1.1rem;color:silver}.welcome strong{color:#fff}#root{display:flex;align-items:center;justify-content:center}.todo-tab{height:100%}.todo-error{margin:0 0 .75rem;padding:.5rem .75rem;font-size:.9rem;color:#ff6b6b;background:#ff6b6b26;border-radius:8px}.todo-layout{display:flex;gap:1.25rem;align-content:center;justify-content:center;flex-direction:row}@media(max-width:700px){.todo-layout{grid-template-columns:1fr}}.user-profile-section{width:100%;border-radius:12px;margin:.75rem}.user-profile-container{display:flex;align-items:center;gap:.75rem}.user-avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#4a9eff,#7b5cf6);display:flex;align-items:center;justify-content:center;font-size:1.1rem;font-weight:700;color:#fff;flex-shrink:0;-webkit-user-select:none;user-select:none}.user-avatar-img{object-fit:cover;background:none;border:1.5px solid rgba(255,255,255,.12)}.user-info{display:flex;flex-direction:column;gap:.15rem;overflow:hidden}.user-name{font-size:.95rem;font-weight:600;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-email{font-size:.75rem;color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.todo-calendar{width:500px;border-radius:12px;padding:.5rem}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin:0 20px}.calendar-arrow-container{display:flex;align-items:center;justify-content:center;gap:.5rem}.calendar-arrow{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--color-bg);border:none;border-radius:8px;color:var(--color-text);font-size:2.25rem;cursor:pointer;padding:0}.calendar-arrow:hover{background:#ffffff1f}.calendar-title{font-size:1rem;font-weight:600;color:var(--color-text)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;justify-items:center}.calendar-weekday{text-align:center;font-size:.75rem;color:#888;padding:.25rem 0;width:30px}.calendar-weekday.sunday{color:#ff6b6b}.calendar-weekday.saturday{color:#4a9eff}.calendar-day-cell{display:flex;flex-direction:column;align-items:center;gap:3px;width:30px}.calendar-day-cell.empty{pointer-events:none}.calendar-day-btn{width:100%;aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:.9rem;font-weight:700;color:var(--color-text);background:var(--color-bg-calendar-day-btn);border:1px solid var(--color-border-calendar-day-btn);border-radius:50%;overflow:hidden;cursor:pointer;min-height:28px;transition:background .2s ease,border-color .2s ease;text-shadow:0 1px 3px rgba(0,0,0,.6)}.calendar-day-cell.selected .calendar-day-btn{border-color:var(--color-border-focus);color:var(--color-text)}.calendar-day-cell.today .calendar-day-btn{border:1.5px solid var(--color-border-today)!important}.calendar-day-btn:hover,.calendar-day-cell.today .calendar-day-btn:hover{background:var(--color-primary-dim);border:1px solid var(--color-border)!important}.calendar-day-num{font-size:.68rem;color:var(--color-text-light);line-height:1;margin-bottom:10px;margin-top:2px}.calendar-day-cell.sunday .calendar-day-num{color:#ff6b6b}.calendar-day-cell.saturday .calendar-day-num{color:#4a9eff}.calendar-day-cell.selected .calendar-day-num{color:var(--color-text);font-weight:600}.calendar-day-cell.today .calendar-day-num{color:#00fff2}.todo-categories{border-radius:12px;padding:1rem;height:var(--todo-tab-height);overflow-y:scroll;scrollbar-width:none;width:50%}.todo-categories::-webkit-scrollbar{display:none}.todo-loading,.no-categories{color:#888;font-size:.9rem;margin:0}.category-list{display:flex;flex-direction:column;gap:1rem}.category-list>*{transition:margin .25s ease,padding .25s ease}.category-block{border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:.75rem;background:var(--color-bg-category);cursor:grab;-webkit-user-select:none;user-select:none;transition:opacity .15s ease}.category-block.dragging{opacity:.4}.category-block.cat-todo-drop-target{outline:2px dashed rgba(74,158,255,.7);background:#4a9eff14;transition:outline .1s ease,background .1s ease}.category-block:active{cursor:grabbing}.category-header-container{display:flex;align-items:center;justify-content:space-between}.category-header{width:90%;font-weight:600;color:var(--color-text);margin-bottom:.5rem;padding-left:.5rem;border-left:3px solid #4a9eff}.add-todo-form{display:flex;width:10%}.add-todo-input{flex:1;width:100%;padding:.4rem .6rem;font-size:.85rem;border:1px solid rgba(255,255,255,.18);border-radius:6px;background:#ffffff0f;color:var(--color-text);outline:none;box-sizing:border-box}.add-todo-input:focus{border-color:#4a9eff99}.todo-add-input-item{padding:.2rem .5rem}.add-todo-btn{width:32px;height:32px;padding:0;font-size:1.1rem;background:#4a9eff40;color:var(--color-text);border:1px dashed rgba(74,158,255,.4);border-radius:6px;cursor:pointer;transition:background .15s,border-color .15s}.add-todo-btn:hover{background:#4a9eff80;border-color:#4a9eff}.add-todo-open-btn{width:30px;height:30px;font-size:.95rem;background:transparent;border:1px dashed rgba(255,255,255,.12);color:#666}.add-todo-open-btn:hover{background:#ffffff0a;border-color:#ffffff40;color:#aaa}.todo-list{list-style:none;margin:0;padding:0}.todo-item{padding:.35rem .5rem;font-size:.9rem;color:var(--color-text-muted)}.todo-label{display:flex;align-items:center;gap:.5rem;cursor:default}.todo-label input[type=checkbox]{margin:0;cursor:pointer;flex-shrink:0}.todo-name{flex:1;cursor:pointer;border-radius:4px;padding:1px 3px;transition:background .12s,color .12s;max-width:25ch;overflow-wrap:break-word;word-break:break-all}.todo-name:hover{background:#ffffff12;color:#e8e8e8}.todo-name.done{color:#888}.todo-item{cursor:grab}.todo-item:active{cursor:grabbing}.todo-item.todo-dragging{opacity:.35}.todo-item.todo-dragging{will-change:transform}.calendar-day-cell.cal-drop-target .calendar-day-btn{background:#4a9eff8c!important;border-color:#4a9eff;transform:scale(1.1);transition:transform .1s ease,background .1s ease}.todo-item.ghost-manual{opacity:.45;cursor:pointer;border-radius:6px;transition:opacity .15s,background .15s}.todo-item.ghost-manual:hover{opacity:.75;background:#ffffff0d}.todo-item.ghost-auto{opacity:.6}.todo-item.ghost-auto:hover{opacity:.85}.ghost-icon{font-size:.75rem;color:#888}.ghost-hint{margin-left:auto;font-size:.72rem;color:var(--color-text-muted);white-space:nowrap}.tab-placeholder{padding:1rem 0;color:#a0a0a0;text-align:center}.profile-tab{display:flex;flex-direction:column;align-items:center;gap:1rem}.profile-info{text-align:center}.profile-info p{margin:.25rem 0;color:#e8e8e8}.profile-email{font-size:.9rem;color:#a0a0a0}.profile-tab .logout-btn{padding:.5rem 1rem;font-size:.9rem;color:#a0a0a0;background:transparent;border:1px solid rgba(255,255,255,.15);border-radius:8px;cursor:pointer}.profile-tab .logout-btn:hover{color:#fff;border-color:#ffffff4d}.todo-popup-overlay{position:fixed;inset:0;background:#00000080;z-index:200;display:flex;align-items:flex-end;justify-content:center}.todo-popup{width:100%;height:var(--todo-popup-height);max-width:520px;background:var(--color-bg);border-radius:16px 16px 0 0;padding:1rem 1.25rem 2.5rem;animation:todoPopupSlideUp .22s ease}@keyframes todoPopupSlideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.todo-popup-handle{width:36px;height:4px;background:var(--color-text);border-radius:2px;margin:0 auto 1rem;cursor:grab;padding:12px 40px;box-sizing:content-type;background-clip:content-box;touch-action:none}.todo-popup-handle:active{cursor:grabbing}.todo-popup-title{font-size:1rem;font-weight:600;color:var(--color-text);margin:0 0 1rem;text-align:center;word-break:break-all}.todo-popup-label{font-size:.82rem;color:#999;margin:0 0 .45rem}.todo-popup-actions{display:flex;flex-direction:column;gap:.4rem}.todo-popup-actions button{width:100%;padding:.75rem 1rem;border:none;border-radius:10px;background:var(--color-bg-category);color:var(--color-text);font-size:.95rem;cursor:pointer;text-align:left;transition:background .15s}.todo-popup-actions button:hover{background:var(--color-bg-hover)}.todo-popup-delete{color:#ff6b6b!important}.todo-popup-delete:hover{background:#ff6b6b1f!important}.todo-popup-input{width:100%;padding:.55rem .75rem;font-size:.95rem;border:1px solid var(--color-border);border-radius:8px;background:#ffffff12;color:var(--color-text);outline:none;margin-bottom:.75rem;box-sizing:border-box}.todo-popup-input:focus{border-color:#4a9eff99}.todo-popup-input[type=date],.todo-popup-input[type=time]{color-scheme:dark}.todo-popup-time-row{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.todo-popup-time-label{font-size:.82rem;color:#aaa;width:2rem;flex-shrink:0}.todo-popup-time-input{flex:1;margin-bottom:0}.todo-popup-row{display:flex;gap:.5rem}.todo-popup-row button{flex:1;padding:.65rem;border:none;border-radius:8px;background:#ffffff12;color:#e0e0e0;font-size:.9rem;cursor:pointer;transition:background .15s}.todo-popup-row button:hover{background:#ffffff21}.todo-popup-confirm{background:#4a9eff40!important;color:#6ab4ff!important}.todo-popup-confirm:hover{background:#4a9eff66!important}.tl-tab{display:flex;flex-direction:column;height:100%;background:var(--color-bg, #1a1a1a);color:var(--color-text, #e0e0e0);font-family:Nanum Square,sans-serif}.tl-tab-header{position:sticky;top:0;z-index:10;background:var(--color-bg);border-bottom:1px solid #999999;display:flex;flex-direction:column;gap:.5rem}.tl-week-strip{display:flex;align-items:center;gap:0;padding:.45rem .5rem .35rem;border-bottom:1px solid #272727;flex-shrink:0}.tl-strip-arrow{background:none;border:none;color:#666;font-size:1.1rem;cursor:pointer;padding:.2rem .45rem;border-radius:6px;transition:color .15s,background .15s;line-height:1}.tl-strip-arrow:hover{color:#ccc;background:#2a2a2a}.tl-strip-days{flex:1;display:flex;justify-content:space-around}.tl-strip-day{display:flex;flex-direction:column;align-items:center;gap:.15rem;background:var(--color-bg);border:none;cursor:pointer;padding:.2rem .5rem;border-radius:8px;transition:background .12s}.tl-strip-day:hover{background:#2a2a2a}.tl-strip-dow{font-size:.65rem;color:#666}.tl-strip-dow.sat{color:#6fa3ef}.tl-strip-dow.sun{color:#ef6f6f}.tl-strip-date{font-size:.88rem;font-weight:700;color:#aaa;width:26px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .12s}.tl-strip-date.sat{color:#6fa3ef}.tl-strip-date.sun{color:#ef6f6f}.tl-strip-date.today{background:#4c8ef52e;color:#6fa3ef}.tl-strip-date.selected,.tl-strip-date.today.selected{background:#4c8ef5;color:#fff}.tl-date-header{display:flex;align-items:center;gap:.55rem;padding:.45rem .85rem;border-bottom:1px solid var(--color-border-timeline);flex-shrink:0}.tl-nav-btn{background:none;border:1px solid #333;color:var(--color-text-muted);border-radius:7px;padding:.22rem .7rem;cursor:pointer;font-size:1.05rem;line-height:1;transition:background .15s,color .15s}.tl-nav-btn:hover{background:#2a2a2a;color:#fff}.tl-date-label{flex:1;text-align:center;font-size:.87rem;font-weight:700;color:var(--color-text)}.tl-today-btn{font-size:.73rem;padding:.22rem .65rem;background:none;border:1px solid #4c8ef5;border-radius:7px;color:#4c8ef5;cursor:pointer;transition:background .15s}.tl-today-btn:hover{background:#4c8ef51f}.tl-error{padding:.35rem .85rem;font-size:.8rem;color:#ff6b6b;flex-shrink:0}.tl-untimed{display:flex;align-items:flex-start;gap:.6rem;flex-shrink:0;padding:.45rem .85rem;border-bottom:1px solid #252525;max-height:80px;overflow-y:auto;scrollbar-width:none}.tl-untimed::-webkit-scrollbar{display:none}.tl-untimed-label{font-size:.68rem;color:#666;white-space:nowrap;padding-top:.12rem}.tl-untimed-list{display:flex;flex-wrap:wrap;gap:.3rem}.tl-untimed-chip{font-size:.73rem;padding:.16rem .5rem;border-radius:20px;border:1px solid;color:var(--color-text-muted);cursor:default}.tl-untimed-chip.done{opacity:.4;text-decoration:line-through}.tl-scroll{flex:1;overflow-y:auto;overflow-x:auto;position:relative;scrollbar-width:thin;scrollbar-color:#333 transparent}.tl-scroll::-webkit-scrollbar{width:4px}.tl-scroll::-webkit-scrollbar-thumb{background:#333;border-radius:2px}.tl-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#555;font-size:.85rem}.tl-body{display:flex;min-height:100%}.tl-gutter{flex-shrink:0;width:52px;border-right:1px solid var(--color-border-timeline);position:sticky;left:0;background:var(--color-bg, #1a1a1a);z-index:2}.tl-hour-label{display:flex;align-items:flex-start;justify-content:flex-end;padding:3px 7px 0 0;font-size:.6rem;color:var(--color-text-muted);box-sizing:border-box;border-top:1px solid var(--color-border-timeline);-webkit-user-select:none;user-select:none}.tl-events{flex:1;position:relative}.tl-hour-line{position:absolute;left:0;right:0;border-top:1px solid var(--color-border-timeline);pointer-events:none}.tl-hour-line.major{border-top-color:var(--color-border-timeline-major)}.tl-half-line{position:absolute;left:0;right:0;border-top:1px dashed #1e1e1e;pointer-events:none}.tl-todo-block{position:absolute;border-radius:6px;padding:4px 6px;overflow:hidden;cursor:pointer;box-sizing:border-box;transition:filter .15s;z-index:1;display:flex;align-items:flex-start;justify-content:center;flex-direction:column;max-width:100px}.tl-todo-block:hover{filter:brightness(1.45);z-index:5}.tl-todo-name{display:block;font-size:.72rem;font-weight:700;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.35}.tl-todo-block.done .tl-todo-name{text-decoration:line-through}.tl-todo-time{display:block;font-size:.61rem;color:var(--color-text-muted);line-height:1.25}.tl-now-line{position:absolute;left:0;right:0;height:2px;background:#ff4545;z-index:4;pointer-events:none;display:flex;align-items:center}.tl-popup-done{color:#4caf82!important}.tl-popup-done:hover{background:#4caf821f!important}.tl-now-dot{width:10px;height:10px;border-radius:50%;background:#ff4545;flex-shrink:0;margin-left:-5px}.pf-tab{display:flex;flex-direction:column;height:100%;overflow-y:auto;padding:16px;box-sizing:border-box;gap:14px}.pf-user-section{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:14px;flex-shrink:0}.pf-user-info{display:flex;align-items:center;gap:12px}.pf-avatar{width:42px;height:42px;border-radius:50%;background:var(--color-accent);display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:700;color:#fff;flex-shrink:0;text-transform:uppercase}.pf-user-name{margin:0;font-size:14px;font-weight:600;color:var(--color-text)}.pf-user-email{margin:2px 0 0;font-size:11px;color:var(--color-text-secondary)}.pf-logout-btn{padding:6px 13px;font-size:12px;background:var(--color-danger-dim);color:var(--color-danger);border:1px solid rgba(255,107,107,.25);border-radius:8px;cursor:pointer;transition:background .2s;white-space:nowrap}.pf-logout-btn:hover{background:#ff6b6b38;border-color:var(--color-danger)}.pf-month-nav{display:flex;align-items:center;justify-content:center;gap:14px;flex-shrink:0}.pf-nav-btn{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:8px;color:var(--color-text);width:32px;height:32px;padding:0;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;transition:background .15s}.pf-nav-btn:hover{background:var(--color-bg-hover);border-color:var(--color-border-focus)}.pf-month-label{font-size:15px;font-weight:600;color:var(--color-text);min-width:110px;text-align:center}.pf-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.pf-loading,.pf-empty{text-align:center;color:var(--color-text-secondary);font-size:13px;padding:32px 0}.pf-cat-card{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:14px;padding:14px 14px 12px;display:flex;flex-direction:column;gap:8px}.pf-cat-header{display:flex;align-items:center;gap:8px}.pf-cat-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.pf-cat-name{font-size:13px;font-weight:600;color:var(--color-text);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pf-cat-pct-wrap{display:flex;align-items:baseline;gap:1px;flex-shrink:0}.pf-cat-pct-num{font-size:18px;font-weight:700;line-height:1}.pf-cat-pct-sign{font-size:11px;color:var(--color-text-secondary)}.pf-cat-pct-empty{font-size:11px;color:var(--color-text-muted)}.pf-progress-bar{height:3px;background:#ffffff12;border-radius:2px;overflow:hidden}.pf-progress-fill{height:100%;border-radius:2px;transition:width .5s ease;min-width:2px}.pf-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.pf-cal-dow{text-align:center;font-size:9px;color:var(--color-text-muted);padding:2px 0 3px;font-weight:600;letter-spacing:.02em}.pf-cal-cell-empty{aspect-ratio:1}.pf-cal-cell{aspect-ratio:1;border-radius:4px;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;gap:0;background:var(--color-bg-profile);transition:background .2s}.pf-cal-cell.pf-has-todos{background:#ffffff08}.pf-cal-day{font-size:10px;color:var(--color-text-light);line-height:1}.pf-cal-cell.pf-today{outline:1.5px solid var(--color-border-today);outline-offset:-1px}.pf-cal-cell.pf-today .pf-cal-day{color:var(--color-border-today);font-weight:700}.pf-cal-check{font-size:11px;line-height:1;color:#fff;margin-top:1px}.pf-cat-stat{margin:0;font-size:10px;color:var(--color-text-muted);text-align:right;letter-spacing:.01em}.pf-user-info-btn{display:flex;align-items:center;gap:12px;background:transparent;border:none;border-radius:10px;padding:4px 8px 4px 4px;cursor:pointer;text-align:left;transition:background .15s;flex:1;min-width:0}.pf-user-info-btn:hover{background:var(--color-bg-hover);border-color:transparent}.pf-avatar-img{width:42px;height:42px;border-radius:50%;object-fit:cover;flex-shrink:0;border:1.5px solid var(--color-border)}.pf-user-text{display:flex;flex-direction:column;min-width:0;flex:1}.pf-user-status{margin:2px 0 0;font-size:11px;color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pf-edit-icon{font-size:14px;color:var(--color-text-muted);flex-shrink:0;margin-left:4px}.pf-modal-overlay{position:fixed;inset:0;background:#0000008c;z-index:200;display:flex;align-items:flex-end;justify-content:center}.pf-modal{background:var(--color-bg);border:1px solid var(--color-border);border-radius:20px 20px 0 0;width:100%;max-width:var(--todo-tab-width);padding:12px 20px 32px;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:14px;animation:pf-modal-slide-up .25s ease}@keyframes pf-modal-slide-up{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.pf-modal-handle{width:36px;height:4px;background:var(--color-border);border-radius:2px;margin-bottom:4px;flex-shrink:0}.pf-modal-title{margin:0;font-size:15px;font-weight:700;color:var(--color-text);align-self:flex-start}.pf-modal-avatar-wrap{display:flex;flex-direction:column;align-items:center;gap:8px}.pf-modal-avatar-btn{position:relative;width:80px;height:80px;border-radius:50%;background:var(--color-accent);border:none;padding:0;cursor:pointer;overflow:hidden;display:flex;align-items:center;justify-content:center}.pf-modal-avatar-btn:hover .pf-modal-avatar-overlay{opacity:1}.pf-modal-avatar-img{width:100%;height:100%;object-fit:cover;border-radius:50%}.pf-modal-avatar-letter{font-size:28px;font-weight:700;color:#fff;text-transform:uppercase}.pf-modal-avatar-overlay{position:absolute;inset:0;border-radius:50%;background:#00000080;display:flex;align-items:center;justify-content:center;font-size:11px;color:#fff;opacity:0;transition:opacity .2s}.pf-modal-remove-img{font-size:11px;color:var(--color-danger);background:var(--color-danger-dim);border:1px solid rgba(255,107,107,.2);border-radius:6px;padding:3px 10px;cursor:pointer}.pf-modal-info{text-align:center}.pf-modal-name{margin:0;font-size:16px;font-weight:700;color:var(--color-text)}.pf-modal-email{margin:3px 0 0;font-size:12px;color:var(--color-text-secondary)}.pf-modal-field{width:100%;display:flex;flex-direction:column;gap:6px}.pf-modal-label{font-size:12px;color:var(--color-text-secondary);font-weight:600}.pf-modal-input{width:100%;box-sizing:border-box;background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:10px;padding:10px 14px;font-size:14px;color:var(--color-text);outline:none;transition:border-color .15s}.pf-modal-input:focus{border-color:var(--color-border-focus)}.pf-modal-input::placeholder{color:var(--color-text-muted)}.pf-modal-error{margin:0;font-size:12px;color:var(--color-danger);text-align:center}.pf-modal-actions{display:flex;gap:10px;width:100%}.pf-modal-cancel{flex:1;padding:11px 0;font-size:14px;background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:10px;color:var(--color-text-secondary);cursor:pointer;transition:background .15s}.pf-modal-cancel:hover:not(:disabled){background:var(--color-bg-hover)}.pf-modal-save{flex:2;padding:11px 0;font-size:14px;font-weight:600;background:var(--color-accent);border:none;border-radius:10px;color:#fff;cursor:pointer;transition:opacity .15s}.pf-modal-save:hover:not(:disabled){opacity:.85}.pf-modal-save:disabled,.pf-modal-cancel:disabled{opacity:.5;cursor:not-allowed}.pf-user-actions{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}.pf-delete-account-btn{padding:4px 10px;font-size:11px;background:transparent;color:var(--color-text-secondary);border:none;border-radius:6px;cursor:pointer;text-decoration:underline;text-underline-offset:2px;transition:color .15s}.pf-delete-account-btn:hover{color:var(--color-danger)}.pf-delete-modal{text-align:center}.pf-delete-icon{font-size:36px;margin-bottom:4px}.pf-delete-desc{font-size:13px;color:var(--color-text-secondary);line-height:1.6;margin:0 0 20px}.pf-delete-desc strong{color:var(--color-danger)}.pf-delete-confirm-btn{flex:1;padding:11px 0;font-size:14px;font-weight:600;background:var(--color-danger);color:#fff;border:none;border-radius:10px;cursor:pointer;transition:opacity .15s}.pf-delete-confirm-btn:hover:not(:disabled){opacity:.85}.pf-delete-confirm-btn:disabled{opacity:.5;cursor:not-allowed}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal-box{background:var(--color-bg);border:1px solid var(--color-border);border-radius:12px;min-width:280px;max-width:90vw;max-height:85vh;overflow:auto;box-shadow:0 8px 32px #0006}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.08)}.modal-header h2{margin:0;font-size:1.1rem;color:var(--color-text)}.modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#a0a0a0;font-size:1.5rem;cursor:pointer;border-radius:6px}.modal-close:hover{background:#ffffff14;color:#fff}.modal-body{padding:1.25rem}.modal-error{margin:0 0 .75rem;padding:.5rem .75rem;font-size:.9rem;color:#ff6b6b;background:#ff6b6b26;border-radius:8px}.modal-loading,.modal-empty,.modal-placeholder{margin:0;color:#a0a0a0;font-size:.95rem;text-align:center}.modal-label{display:block;margin-bottom:.5rem;font-size:.9rem;color:var(--color-text)}.modal-input{width:100%;padding:.6rem .75rem;font-size:1rem;border:1px solid var(--color-border);border-radius:8px;background:var(--color-bg-surface);color:var(--color-text-secondary);margin-bottom:1rem;box-sizing:border-box}.modal-input.inline{width:auto;min-width:140px;margin-bottom:0;margin-right:.5rem}.modal-input:focus{outline:none;border-color:#4a9eff}.color-options{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.color-options.inline{margin-bottom:0;margin-right:.5rem}.color-swatch{width:28px;height:28px;min-width:28px;min-height:28px;border-radius:50%;border:2px solid transparent;padding:0;cursor:pointer;flex-shrink:0;transition:transform .15s,border-color .15s}.color-swatch.small{width:22px;height:22px;min-width:22px;min-height:22px}.color-swatch:hover{transform:scale(1.1)}.color-swatch.active{border-color:#fff;box-shadow:0 0 0 2px #4a9eff80}.color-swatch-custom{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.color-swatch-custom input[type=color]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;border:none;padding:0}.color-swatch-custom-icon{font-size:.75rem;color:#ffffffb3;pointer-events:none;z-index:1;line-height:1}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.25rem}.modal-btn{padding:.5rem 1rem;font-size:.9rem;border-radius:8px;cursor:pointer;border:none;transition:opacity .2s}.modal-btn.small{padding:.35rem .75rem;font-size:.85rem}.modal-btn.primary{background:#4a9eff;color:#fff}.modal-btn.primary:hover:not(:disabled){opacity:.9}.modal-btn.secondary{background:#ffffff1a;color:var(--color-text);border:1px solid rgba(255,255,255,.15)}.modal-btn.secondary:hover{background:#ffffff26}.modal-btn.danger{background:#e85d754d;color:#e85d75}.modal-btn.danger:hover{background:#e85d7580}.modal-box-wide{width:100%;max-width:420px}.category-manage-list{list-style:none;margin:0;padding:0}.category-manage-list>*{transition:margin .25s ease}.category-manage-item{display:flex;align-items:center;justify-content:space-between;padding:.75rem 0;border-bottom:1px solid rgba(255,255,255,.06);gap:.75rem;cursor:grab;-webkit-user-select:none;user-select:none;transition:opacity .15s ease}.category-manage-item.dragging{opacity:.5}.category-manage-item:active{cursor:grabbing}.category-manage-item:last-child{border-bottom:none}.category-manage-name{flex:1;padding-left:.5rem;border-left:3px solid #4a9eff;font-size:.95rem;color:var(--color-text)}.category-manage-actions{display:flex;gap:.5rem}.category-edit-form{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;width:100%}.category-edit-actions{display:flex;gap:.5rem}.routine-category-list{display:flex;flex-direction:column;gap:1.25rem}.routine-category-block{border:1px solid var(--color-border);border-radius:10px;padding:.75rem;background:var(--color-bg-profile)}.routine-empty{font-size:.85rem;color:#666;margin:.25rem 0 .5rem .5rem}.routine-list{list-style:none;margin:0 0 .5rem;padding:0;display:flex;flex-direction:column;gap:.4rem}.routine-item{background:#ffffff0a;border-radius:8px;padding:.5rem .75rem}.routine-item-info{display:flex;flex-direction:column;gap:.25rem}.routine-item-name{font-size:.9rem;font-weight:600;color:var(--color-text)}.routine-item-meta{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;font-size:.78rem;color:var(--color-text-muted)}.routine-item-badge{padding:.1rem .4rem;border-radius:4px;background:var(--color-bg-surface);font-size:.72rem;color:var(--color-text-muted)}.routine-item-badge.badge-auto{background:var(--color-primary-dim);color:#4a9eff}.routine-item-badge.badge-manual{background:var(--color-primary-dim);color:#6bcf7f}.routine-item-actions{display:flex;gap:.4rem;margin-top:.25rem}.routine-add-btn{width:100%;padding:.4rem;font-size:.85rem;color:var(--color-text-muted);background:transparent;border:1px dashed var(--color-border);border-radius:6px;cursor:pointer;transition:color .15s,border-color .15s}.routine-add-btn:hover{color:var(--color-text-secondary);border-color:var(--color-border)}.routine-form{margin-top:.5rem;display:flex;flex-direction:column;gap:.6rem}.routine-form-row{display:flex;flex-direction:column;gap:.25rem}.routine-form-dates{flex-direction:row;gap:.75rem}.routine-form-dates>div{flex:1;display:flex;flex-direction:column;gap:.25rem}.routine-form-label{font-size:.78rem;color:#888}.routine-form-hint{font-size:.78rem;color:#666;margin:0;padding:.25rem 0}.routine-dow-group{display:flex;gap:.3rem;flex-wrap:wrap}.routine-dow-btn{width:32px;height:32px;border-radius:50%;border:1px solid rgba(255,255,255,.12);background:#ffffff0a;color:#aaa;font-size:.8rem;cursor:pointer;transition:background .15s,color .15s}.routine-dow-btn.active{background:var(--color-primary);border-color:#4a9eff;color:#fff}.routine-monthly-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem}.routine-monthly-btn{aspect-ratio:1;border-radius:6px;border:1px solid rgba(255,255,255,.08);background:#ffffff0a;color:#aaa;font-size:.75rem;cursor:pointer;transition:background .15s,color .15s}.routine-monthly-btn.active{background:var(--color-primary);border-color:#4a9eff;color:#fff}.routine-form-passivity{padding:.5rem 0;border-top:1px solid rgba(255,255,255,.07)}.routine-passivity-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.88rem;color:var(--color-text)}.routine-passivity-hint{font-size:.75rem;color:var(--color-text-muted)}.category-delete-confirm{display:flex;flex-direction:column;gap:.5rem;width:100%;padding:.4rem 0}.category-delete-confirm-msg{font-size:.88rem;color:#ffb347}.main-page{min-height:100vh;display:flex;flex-direction:column;width:var(--todo-tab-width)}.main-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.08);flex-shrink:0;position:relative}.main-header h1{margin:0;font-size:1.35rem;color:#e8e8e8}.header-actions{position:relative}.hamburger-btn{display:flex;flex-direction:column;justify-content:center;gap:5px;width:40px;height:40px;padding:0;background:var(--color-bg-surface);border-radius:8px;cursor:pointer;color:var(--color-text)}.hamburger-btn:hover{background:var(--color-bg-hover)}.hamburger-line{display:block;width:18px;height:2px;background:currentColor;margin:0 auto;border-radius:1px}.hamburger-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:160px;background:var(--color-bg);border:1px solid rgba(255,255,255,.1);border-radius:10px;box-shadow:0 8px 24px #0000004d;overflow:hidden;z-index:50}.hamburger-menu button{display:block;width:100%;padding:.75rem 1rem;text-align:left;font-size:.95rem;color:var(--color-text);background:transparent;border:none;cursor:pointer;transition:background .15s}.hamburger-menu button:hover{background:var(--color-bg-hover)}.main-content{flex:1;padding:1rem;padding-bottom:calc(var(--todo-tabs-bar-height) + 1rem)}.main-tabs{width:var(--todo-tab-width);height:var(--todo-tabs-bar-height);background:var(--color-bg);position:fixed;bottom:0;left:0;right:0;display:flex;border-top:1px solid rgba(255,255,255,.08);padding:.5rem 0;z-index:10;margin:0 auto}.tab-btn{flex:1;padding:.75rem .5rem;font-size:.95rem;color:var(--color-text-secondary);background:transparent;border:none;cursor:pointer;transition:color .2s,background .2s}.tab-btn:hover{color:var(--color-text)}.tab-btn.active{color:#4a9eff;font-weight:600}.settings-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;background:#ffffff0f;border-radius:8px;cursor:pointer;color:var(--color-text);transition:background .15s}.settings-btn:hover{background:#ffffff1f;border-color:transparent}[data-theme=light] .settings-btn{background:var(--color-bg-surface);border-color:var(--color-border)}[data-theme=light] .settings-btn:hover{background:var(--color-bg-hover)}.settings-overlay{position:fixed;inset:0;background:#00000080;z-index:200;display:flex;align-items:flex-end;justify-content:center}.settings-sheet{background:var(--color-bg);border:1px solid var(--color-border);border-radius:20px 20px 0 0;width:100%;max-width:var(--todo-tab-width);padding:12px 20px 40px;box-sizing:border-box;display:flex;flex-direction:column;gap:20px;animation:settings-slide-up .25s ease}@keyframes settings-slide-up{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.settings-handle{width:36px;height:4px;background:var(--color-border);border-radius:2px;align-self:center;margin-bottom:4px;flex-shrink:0}.settings-title{margin:0;font-size:16px;font-weight:700;color:var(--color-text)}.settings-section{display:flex;flex-direction:column;gap:10px}.settings-section-label{margin:0;font-size:12px;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em}.settings-theme-row{display:flex;gap:10px}.settings-theme-btn{flex:1;display:flex;align-items:center;gap:8px;padding:12px 14px;background:var(--color-bg-surface);border:1.5px solid var(--color-border);border-radius:12px;color:var(--color-text-secondary);font-size:13px;font-weight:500;cursor:pointer;transition:border-color .15s,background .15s,color .15s;position:relative}.settings-theme-btn:hover{background:var(--color-bg-hover);border-color:var(--color-text-muted)}.settings-theme-btn.active{border-color:var(--color-accent);color:var(--color-text);background:#7b5cf614}.settings-theme-icon{font-size:16px;line-height:1}.settings-theme-check{margin-left:auto;font-size:13px;color:var(--color-accent);font-weight:700}.settings-delete-account-btn{align-self:flex-start;padding:0;font-size:13px;color:var(--color-text-secondary);background:transparent;border:none;cursor:pointer;text-decoration:underline;text-underline-offset:2px;transition:color .15s}.settings-delete-account-btn:hover{color:var(--color-danger)}.settings-delete-confirm{display:flex;flex-direction:column;gap:10px;padding:14px;background:var(--color-danger-dim);border:1px solid rgba(255,107,107,.25);border-radius:12px}.settings-delete-desc{margin:0;font-size:13px;color:var(--color-text-secondary);line-height:1.6}.settings-delete-desc strong{color:var(--color-danger)}.settings-delete-error{margin:0;font-size:12px;color:var(--color-danger)}.settings-delete-actions{display:flex;gap:8px}.settings-delete-cancel{flex:1;padding:9px 0;font-size:13px;font-weight:500;background:var(--color-bg-surface);color:var(--color-text-secondary);border:1px solid var(--color-border);border-radius:8px;cursor:pointer;transition:background .15s}.settings-delete-cancel:hover:not(:disabled){background:var(--color-bg-hover)}.settings-delete-confirm-btn{flex:1;padding:9px 0;font-size:13px;font-weight:600;background:var(--color-danger);color:#fff;border:none;border-radius:8px;cursor:pointer;transition:opacity .15s}.settings-delete-confirm-btn:hover:not(:disabled){opacity:.85}.settings-delete-cancel:disabled,.settings-delete-confirm-btn:disabled{opacity:.5;cursor:not-allowed}@media(max-width:700px){.todo-tab{width:100%;height:100%}.todo-layout{flex-direction:column}.todo-calendar{width:100%}.todo-categories{width:100%;padding:0}.main-content{padding-bottom:calc(var(--todo-tabs-bar-height) + 3rem)}.todo-popup{width:80%}}.setup-card{max-width:420px}.setup-desc{margin:0 0 1.5rem;font-size:.88rem;color:var(--color-text-secondary);text-align:center;line-height:1.6}.setup-avatar-wrap{display:flex;flex-direction:column;align-items:center;gap:.4rem;margin-bottom:.5rem}.setup-avatar{width:88px;height:88px;border-radius:50%;background:#ffffff14;border:2px dashed rgba(255,255,255,.2);cursor:pointer;overflow:hidden;display:flex;align-items:center;justify-content:center;transition:border-color .2s,background .2s;padding:0}.setup-avatar:hover{border-color:#4a9eff;background:#4a9eff14}.setup-avatar img{width:100%;height:100%;object-fit:cover}.setup-avatar-placeholder{font-size:2rem;color:#ffffff4d;line-height:1}.setup-avatar-hint{margin:0;font-size:.78rem;color:#666}.setup-required{color:#ff6b6b;font-size:.85rem;margin-left:2px}.setup-optional{font-size:.78rem;color:#666;font-weight:400;margin-left:4px}.setup-skip{display:block;margin:1rem auto 0;background:none;border:none;color:#666;font-size:.85rem;cursor:pointer;text-decoration:underline;transition:color .2s}.setup-skip:hover{color:#999}
