*{margin:0;padding:0;box-sizing:border-box}:root{--bg-body: #eaf2ff;--bg-white: rgba(255, 255, 255, .72);--bg-card: rgba(255, 255, 255, .55);--bg-card-solid: #ffffff;--bg-hover: rgba(255, 255, 255, .8);--bg-input: rgba(255, 255, 255, .6);--border-light: rgba(255, 255, 255, .6);--border-glass: rgba(255, 255, 255, .45);--border-input: rgba(180, 210, 255, .5);--text-primary: #0e2a4a;--text-secondary: #3d6089;--text-muted: #7ea3c7;--accent-blue: #1a8cff;--accent-blue-light: #5eb3ff;--accent-green: #2dd4a0;--accent-orange: #ffb340;--accent-red: #ff5a65;--accent-purple: #8b5cf6;--status-planning: #1a8cff;--status-developing: #2dd4a0;--status-paused: #ffb340;--status-completed: #8b5cf6;--status-maintaining: #f472b6;--glass-blur: blur(20px) saturate(180%);--glass-blur-heavy: blur(30px) saturate(200%);--shadow-glass: 0 8px 32px rgba(26, 140, 255, .08), inset 0 1px 0 rgba(255,255,255,.6);--shadow-glass-hover: 0 12px 40px rgba(26, 140, 255, .14), inset 0 1px 0 rgba(255,255,255,.7);--shadow-glow: 0 0 30px rgba(26, 140, 255, .15);--radius-sm: 10px;--radius-md: 16px;--radius-lg: 20px;--radius-xl: 28px}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:linear-gradient(135deg,#d6e8ff,#eaf2ff,#f0f4ff 60%,#e8eeff);color:var(--text-primary);min-height:100vh;overflow-x:hidden}.app{min-height:100vh;position:relative}.bg-blobs{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0;overflow:hidden}.blob{position:absolute;border-radius:50%;filter:blur(80px);opacity:.35;will-change:transform;animation:blobFloat 20s ease-in-out infinite}.blob-1{width:500px;height:500px;background:radial-gradient(circle,#1a8cff66,#5eb3ff1a);top:-10%;left:-5%;animation-delay:0s;animation-duration:22s}.blob-2{width:400px;height:400px;background:radial-gradient(circle,#8b5cf64d,#2dd4a00d);top:50%;right:-8%;animation-delay:-7s;animation-duration:25s}.blob-3{width:350px;height:350px;background:radial-gradient(circle,#2dd4a04d,#1a8cff0d);bottom:-5%;left:30%;animation-delay:-14s;animation-duration:28s}@keyframes blobFloat{0%,to{transform:translate(0) scale(1)}25%{transform:translate(40px,-30px) scale(1.05)}50%{transform:translate(-20px,20px) scale(.95)}75%{transform:translate(30px,40px) scale(1.03)}}.app-header{position:relative;z-index:2;text-align:center;padding:24px 20px 16px}.header-glass{display:flex;align-items:center;justify-content:center;max-width:1100px;width:100%;margin:0 auto;padding:12px 32px;background:#ffffff73;backdrop-filter:var(--glass-blur-heavy);-webkit-backdrop-filter:var(--glass-blur-heavy);border-radius:var(--radius-xl);border:1px solid rgba(255,255,255,.5);box-shadow:var(--shadow-glass),0 0 60px #1a8cff0f;animation:headerIn .8s cubic-bezier(.16,1,.3,1) both}.app-title{font-size:22px;font-weight:700;background:linear-gradient(135deg,#1a8cff,#5eb3ff,#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:1px}.header-left{display:flex;flex-direction:column;align-items:center}.title-icon{display:inline-block;animation:iconPulse 2s ease-in-out infinite}@keyframes iconPulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.app-subtitle{font-size:13px;color:var(--text-muted);margin-top:4px;letter-spacing:2px}@keyframes headerIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.main-content{position:relative;z-index:2;max-width:1100px;margin:0 auto;padding:24px 20px 80px}.page-enter-active{animation:pageIn .5s cubic-bezier(.22,1,.36,1) both}.page-leave-active{animation:pageOut .3s cubic-bezier(.55,0,1,.45) both}@keyframes pageIn{0%{opacity:0;transform:translateY(24px) scale(.97);filter:blur(4px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}@keyframes pageOut{0%{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}to{opacity:0;transform:translateY(-12px) scale(.98);filter:blur(2px)}}.glass-card{background:var(--bg-card);backdrop-filter:blur(16px) saturate(160%);-webkit-backdrop-filter:blur(16px) saturate(160%);border-radius:var(--radius-lg);border:1px solid var(--border-glass);padding:20px 24px;box-shadow:var(--shadow-glass);transition:box-shadow .5s cubic-bezier(.22,1,.36,1),border-color .5s cubic-bezier(.22,1,.36,1);position:relative;overflow:hidden;contain:layout paint style}.glass-card:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent);opacity:.6}.glass-card:hover{box-shadow:var(--shadow-glass-hover);border-color:#ffffffa6}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.page-title{font-size:18px;font-weight:600;color:var(--text-primary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 18px;border:none;border-radius:var(--radius-sm);font-size:13px;font-weight:500;cursor:pointer;transition:all .35s cubic-bezier(.22,1,.36,1);font-family:inherit;white-space:nowrap;position:relative;overflow:hidden}.btn:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--ripple-x, 50%) var(--ripple-y, 50%),rgba(255,255,255,.3) 0%,transparent 60%);opacity:0;transition:opacity .4s}.btn:active:after{opacity:1}.btn-primary{background:linear-gradient(135deg,#1a8cff,#5eb3ff);color:#fff;box-shadow:0 4px 15px #1a8cff4d}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 20px #1a8cff66}.btn-success{background:linear-gradient(135deg,#2dd4a0,#5eebc0);color:#fff;box-shadow:0 4px 15px #2dd4a04d}.btn-success:hover{transform:translateY(-1px);box-shadow:0 6px 20px #2dd4a066}.btn-ghost{background:#fff6;backdrop-filter:blur(10px);color:var(--accent-blue);border:1px solid rgba(26,140,255,.25)}.btn-ghost:hover{background:#fff9;border-color:#1a8cff66}.btn-warning{background:linear-gradient(135deg,#ffb340,#ffd080);color:#fff;box-shadow:0 4px 15px #ffb3404d}.btn-warning:hover{transform:translateY(-1px)}.btn-danger{background:linear-gradient(135deg,#ff5a65,#ff8a90);color:#fff;box-shadow:0 4px 15px #ff5a654d}.btn-danger:hover{transform:translateY(-1px)}.btn-info{background:linear-gradient(135deg,#1a8cff,#5eb3ff);color:#fff;box-shadow:0 4px 15px #1a8cff4d}.btn-info:hover{transform:translateY(-1px)}.btn-sm{padding:4px 10px;font-size:11px;border-radius:6px}.form-group{margin-bottom:14px}.form-label{display:block;font-size:13px;font-weight:500;color:var(--text-secondary);margin-bottom:6px}.form-input,.form-select,.form-textarea{width:100%;padding:10px 14px;background:var(--bg-input);backdrop-filter:blur(10px);border:1px solid var(--border-input);border-radius:var(--radius-sm);color:var(--text-primary);font-size:13px;font-family:inherit;transition:all .35s cubic-bezier(.22,1,.36,1);outline:none}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--accent-blue);box-shadow:0 0 0 4px #1a8cff1f,0 4px 12px #1a8cff14;background:#fffc}.form-input::placeholder,.form-textarea::placeholder{color:var(--text-muted)}.form-textarea{resize:vertical;min-height:72px}.form-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%233d6089' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:34px}.modal-overlay{position:fixed;inset:0;background:#0e2a4a66;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:100;animation:overlayIn .25s ease-out both}.modal{background:#ffffffe0;backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);border-radius:var(--radius-xl);border:1px solid rgba(255,255,255,.5);padding:28px 30px;width:90%;max-width:480px;max-height:90vh;overflow-y:auto;animation:modalIn .3s cubic-bezier(.22,1,.36,1) both;box-shadow:0 20px 60px #1a8cff1f,inset 0 1px #fff9}.modal-title{font-size:18px;font-weight:600;margin-bottom:20px;background:linear-gradient(135deg,#1a8cff,#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.modal-actions{display:flex;flex-direction:column;gap:10px;margin-top:20px}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.status-badge{display:inline-flex;align-items:center;padding:3px 12px;border-radius:14px;font-size:11px;font-weight:500;line-height:1.6;backdrop-filter:blur(8px)}.status-planning{background:#1a8cff1f;color:var(--status-planning);border:1px solid rgba(26,140,255,.15)}.status-developing{background:#2dd4a01f;color:var(--status-developing);border:1px solid rgba(45,212,160,.15)}.status-paused{background:#ffb3401f;color:var(--status-paused);border:1px solid rgba(255,179,64,.15)}.status-completed{background:#8b5cf61f;color:var(--status-completed);border:1px solid rgba(139,92,246,.15)}.status-maintaining{background:#f472b61f;color:var(--status-maintaining);border:1px solid rgba(244,114,182,.15)}.status-todo{background:#7ea3c71f;color:var(--text-muted);border:1px solid rgba(126,163,199,.15)}.status-in_progress{background:#1a8cff1f;color:var(--accent-blue);border:1px solid rgba(26,140,255,.15)}.status-done{background:#2dd4a01f;color:var(--accent-green);border:1px solid rgba(45,212,160,.15)}.status-cancelled{background:#ff5a651f;color:var(--accent-red);border:1px solid rgba(255,90,101,.15)}.progress-bar{width:100%;height:8px;background:#fff6;border-radius:4px;overflow:hidden;backdrop-filter:blur(4px)}.progress-bar-fill{height:100%;background:linear-gradient(90deg,#1a8cff,#5eb3ff,#2dd4a0);border-radius:4px;transition:width .8s cubic-bezier(.16,1,.3,1);position:relative}.progress-bar-fill:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:shimmer 2s ease-in-out infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.empty-state{text-align:center;padding:50px 20px;color:var(--text-muted)}.empty-state svg{margin-bottom:12px;opacity:.4}.empty-state p{font-size:14px}.fab-container{position:fixed;bottom:36px;right:36px;z-index:99}.fab-actions-wrapper{position:absolute;bottom:calc(100% + 14px);right:0;display:flex;flex-direction:column;align-items:flex-end;gap:0;pointer-events:none}.fab-actions-wrapper.open{gap:10px;pointer-events:auto}.fab-backdrop{position:fixed;inset:0;z-index:98;background:#0e2a4a26;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.fab-backdrop-enter-active{transition:all .35s cubic-bezier(.22,1,.36,1)}.fab-backdrop-leave-active{transition:all .25s cubic-bezier(.55,0,1,.45)}.fab-backdrop-enter-from,.fab-backdrop-leave-to{opacity:0;backdrop-filter:blur(0)}.fab-action{display:flex;align-items:center;gap:10px;padding:10px 18px;background:#ffffffbf;backdrop-filter:blur(16px) saturate(160%);-webkit-backdrop-filter:blur(16px) saturate(160%);border:1px solid rgba(255,255,255,.5);border-radius:28px;cursor:pointer;font-family:inherit;font-size:13px;font-weight:500;color:var(--text-primary);box-shadow:0 4px 20px #1a8cff1f;white-space:nowrap;opacity:0;transform:translateY(10px) scale(.6);transition:opacity .4s cubic-bezier(.22,1,.36,1),transform .4s cubic-bezier(.22,1,.36,1),gap .5s cubic-bezier(.22,1,.36,1),background .3s ease,box-shadow .3s ease;transition-delay:calc((var(--total) - 1 - var(--idx)) * .04s);pointer-events:none}.fab-actions-wrapper.open .fab-action{opacity:1;transform:translateY(0) scale(1);pointer-events:auto;transition-delay:calc((var(--total) - 1 - var(--idx)) * .06s)}.fab-action:hover{background:#ffffffe6;transform:translate(-6px) scale(1.04);box-shadow:0 8px 28px #1a8cff38}.fab-action-icon{font-size:16px;line-height:1;display:inline-flex;transition:transform .3s cubic-bezier(.22,1,.36,1)}.fab-action:hover .fab-action-icon{transform:scale(1.2)}.fab-action-label{color:var(--text-secondary)}.fab-btn{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#1a8cff,#5eb3ff);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 24px #1a8cff66;transition:all .5s cubic-bezier(.22,1,.36,1);position:relative}.fab-btn:before{content:"";position:absolute;inset:-3px;border-radius:50%;background:linear-gradient(135deg,#1a8cff66,#8b5cf666);z-index:-1;animation:fabPulse 2s ease-in-out infinite;transition:all .5s cubic-bezier(.22,1,.36,1)}@keyframes fabPulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:.8;transform:scale(1.1)}}.fab-btn:hover{transform:scale(1.08);box-shadow:0 8px 30px #1a8cff80}.fab-icon{transition:transform .5s cubic-bezier(.22,1,.36,1)}.fab-btn.open{background:linear-gradient(135deg,#ff5a65,#ff8a90);box-shadow:0 6px 24px #ff5a6566}.fab-btn.open:hover{transform:scale(1.08)}.fab-btn.open .fab-icon{transform:rotate(135deg)}.fab-btn.open:before{background:linear-gradient(135deg,#ff5a6566,#ffb34066);animation:none;opacity:.6}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes countUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.stagger-1{animation-delay:.05s}.stagger-2{animation-delay:.1s}.stagger-3{animation-delay:.15s}.stagger-4{animation-delay:.2s}.stagger-5{animation-delay:.25s}.card-enter{animation:cardEnter .6s cubic-bezier(.22,1,.36,1) both}@keyframes cardEnter{0%{opacity:0;transform:translateY(24px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 768px){.app-header{padding:16px 12px 12px}.header-glass{padding:10px 20px}.app-title{font-size:18px}.app-subtitle{font-size:11px}.main-content{padding:0 10px 100px}.modal{padding:20px;width:94%;max-height:85vh;border-radius:16px}.modal-overlay{align-items:flex-end;padding:0}.modal-overlay .modal{margin-bottom:0;border-radius:20px 20px 0 0;max-height:90vh}.fab-container{bottom:20px;right:20px}.fab-btn{width:50px;height:50px}.fab-action{padding:8px 14px}.glass-card{border-radius:14px}.status-badge{font-size:10px;padding:2px 8px}.btn-sm{font-size:11px;padding:4px 10px}}.trash-list{display:flex;flex-direction:column;gap:8px;max-height:50vh;overflow-y:auto}.trash-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:#fff6;border-radius:10px;border:1px solid rgba(255,255,255,.3);gap:8px}.trash-info{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.trash-name{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trash-date{font-size:11px;color:var(--text-muted);white-space:nowrap}.trash-actions{display:flex;gap:4px;flex-shrink:0}.trash-type-badge{font-size:10px;padding:2px 8px;border-radius:10px;font-weight:500;white-space:nowrap}.trash-type-badge.type-project{background:#1a8cff26;color:var(--accent-blue)}.trash-type-badge.type-task{background:#2dd4a026;color:var(--accent-green)}.trash-type-badge.type-log{background:#ffb34026;color:var(--accent-orange)}.toast{position:fixed;top:80px;left:50%;transform:translate(-50%);padding:10px 24px;background:#ffffffe6;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:12px;border:1px solid rgba(255,255,255,.5);box-shadow:0 8px 32px #0000001f;font-size:14px;font-weight:500;z-index:200;pointer-events:none}.toast-enter-active{transition:all .3s cubic-bezier(.22,1,.36,1)}.toast-leave-active{transition:all .25s ease-in}.toast-enter-from{opacity:0;transform:translate(-50%) translateY(-16px)}.toast-leave-to{opacity:0;transform:translate(-50%) translateY(-10px)}
