:root{--primary: #6366f1;--primary-dark: #4f46e5;--primary-light: #818cf8;--primary-glow: rgba(99, 102, 241, .5);--secondary: #22c55e;--secondary-dark: #16a34a;--secondary-glow: rgba(34, 197, 94, .5);--accent: #f59e0b;--accent-light: #fbbf24;--accent-glow: rgba(245, 158, 11, .5);--danger: #ef4444;--danger-glow: rgba(239, 68, 68, .5);--gradient-fire: linear-gradient(135deg, #f97316 0%, #ef4444 50%, #dc2626 100%);--gradient-gold: linear-gradient(135deg, #fbbf24 0%, #f59e0b 50%, #d97706 100%);--gradient-level: linear-gradient(135deg, #6366f1 0%, #8b5cf6 50%, #a855f7 100%);--gradient-success: linear-gradient(135deg, #22c55e 0%, #10b981 100%);--gradient-header: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);--bg-dark: #0c0f1a;--bg-card: #1a1f35;--bg-card-hover: #232942;--bg-input: #2a3150;--bg-hover: #353d5c;--bg-glow: radial-gradient(circle at 50% 0%, rgba(99, 102, 241, .15) 0%, transparent 50%);--text-primary: #f8fafc;--text-secondary: #94a3b8;--text-muted: #64748b;--border: #3d4663;--shadow: 0 4px 20px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 40px rgba(0, 0, 0, .5);--shadow-glow: 0 0 30px var(--primary-glow);--shadow-fire: 0 0 30px rgba(249, 115, 22, .4);--radius: 16px;--radius-sm: 10px;--radius-lg: 20px}[data-theme=light]{--bg-dark: #f0f4ff;--bg-card: #ffffff;--bg-card-hover: #f8fafc;--bg-input: #e2e8f0;--bg-hover: #cbd5e1;--bg-glow: radial-gradient(circle at 50% 0%, rgba(99, 102, 241, .08) 0%, transparent 50%);--text-primary: #0f172a;--text-secondary: #475569;--text-muted: #64748b;--border: #e2e8f0;--shadow: 0 4px 20px rgba(0, 0, 0, .08);--shadow-lg: 0 10px 40px rgba(0, 0, 0, .12);--shadow-glow: 0 0 30px rgba(99, 102, 241, .2)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg-dark);background-image:var(--bg-glow);color:var(--text-primary);min-height:100vh;min-height:100dvh;-webkit-tap-highlight-color:transparent;transition:background .3s,color .3s}#app{max-width:480px;margin:0 auto;padding-bottom:80px}#main-content{animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.header{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);padding:20px;text-align:center;position:sticky;top:0;z-index:100}.header h1{font-size:1.5rem;font-weight:700;color:#fff}.status-card{background:var(--bg-card);margin:16px;padding:20px;border-radius:var(--radius);box-shadow:var(--shadow)}.status-row{display:flex;justify-content:space-around;text-align:center}.status-item{flex:1}.status-value{font-size:2rem;font-weight:700;color:var(--primary);transition:transform .3s,color .3s}.status-value.streak{color:var(--warning)}.status-label{font-size:.75rem;color:var(--text-secondary);margin-top:4px}.level-progress{margin-top:16px}.progress-bar{height:8px;background:var(--bg-input);border-radius:4px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--primary) 0%,var(--secondary) 100%);transition:width .3s ease}.progress-text{font-size:.75rem;color:var(--text-muted);text-align:right;margin-top:4px}.exercise-section{padding:16px}.section-title{font-size:1rem;font-weight:600;margin-bottom:12px;color:var(--text-secondary)}.exercise-card{background:var(--bg-card);border-radius:var(--radius);padding:14px 12px;margin-bottom:10px;box-shadow:var(--shadow);transition:transform .2s,box-shadow .2s}.exercise-card:active{transform:scale(.98)}.exercise-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.exercise-name{font-size:1.1rem;font-weight:600}.exercise-total{font-size:.8rem;color:var(--text-muted)}.exercise-controls{display:grid;grid-template-columns:max-content minmax(52px,1fr) max-content;align-items:center;gap:10px;padding-top:4px}.button-row{display:flex;align-items:center;gap:6px}.minus-row{justify-self:start}.plus-row{justify-self:end}.count-btn.secondary{width:42px;height:42px;font-size:1.1rem}.btn-label{position:absolute;bottom:2px;font-size:.6rem;color:var(--text-secondary);font-weight:600;pointer-events:none;z-index:1}.count-btn.plus .btn-label{color:#fffffffa;background:#0f172a3d;padding:1px 6px;border-radius:999px;box-shadow:0 1px 3px #0f172a38;text-shadow:0 1px 2px rgba(15,23,42,.28)}.increments-config{display:flex;flex-direction:column;gap:12px}.increment-pair{display:flex;flex-direction:column;gap:4px;padding:8px 12px;background:var(--bg-input);border-radius:8px}.increment-type-label{font-size:.75rem;color:var(--text-secondary);font-weight:600}.increment-inputs{display:flex;gap:8px}.increment-input{flex:1;min-width:0}.count-btn{width:50px;height:50px;border-radius:50%;border:none;font-size:1.35rem;font-weight:700;cursor:pointer;transition:transform .1s,background .2s,box-shadow .2s;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;user-select:none;-webkit-user-select:none;touch-action:manipulation}.count-btn:after{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:#ffffff4d;border-radius:50%;transform:translate(-50%,-50%);transition:width .3s,height .3s}.count-btn:active:after{width:100px;height:100px}.count-btn:active{transform:scale(.9)}.count-btn.minus{background:var(--bg-input);color:var(--text-primary)}.count-btn.minus:hover{background:var(--bg-hover)}.count-btn.minus:active{background:var(--danger);color:#fff}.count-btn.plus{background:var(--primary);color:#fff;box-shadow:0 4px 12px #4f46e566}.count-btn.plus:hover{background:var(--primary-dark);box-shadow:0 6px 16px #4f46e580}.count-btn.plus:active{background:var(--secondary);box-shadow:0 2px 8px #10b98166}.btn-increment{position:absolute;top:-10px;right:-10px;background:var(--accent);color:#fff;font-size:.65rem;font-weight:700;padding:2px 6px;border-radius:10px;box-shadow:0 2px 6px #0006;z-index:10;pointer-events:none;white-space:nowrap;line-height:1.2}.count-btn.plus{position:relative}.count-display{font-size:2rem;font-weight:700;min-width:52px;text-align:center;transition:transform .15s,color .15s;line-height:1}.count-display.pulse-up{animation:countPulseUp .3s ease}.count-display.pulse-down{animation:countPulseDown .3s ease}@keyframes countPulseUp{0%{transform:scale(1);color:var(--text-primary)}50%{transform:scale(1.3);color:var(--secondary)}to{transform:scale(1);color:var(--text-primary)}}@keyframes countPulseDown{0%{transform:scale(1);color:var(--text-primary)}50%{transform:scale(.8);color:var(--danger)}to{transform:scale(1);color:var(--text-primary)}}.nav{position:fixed;bottom:0;left:0;right:0;background:var(--bg-card);border-top:1px solid var(--border);display:flex;justify-content:space-around;padding:8px 0;padding-bottom:max(8px,env(safe-area-inset-bottom));z-index:100}.nav-item{display:flex;flex-direction:column;align-items:center;padding:8px 16px;color:var(--text-muted);text-decoration:none;font-size:.7rem;cursor:pointer;transition:color .2s,transform .2s;background:none;border:none}.nav-item:active{transform:scale(.95)}.nav-item.active{color:var(--primary)}.nav-icon{font-size:1.5rem;margin-bottom:4px;transition:transform .2s}.nav-item.active .nav-icon{transform:scale(1.1)}.badge-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:16px}.badge-card{background:var(--bg-card);border-radius:var(--radius);padding:16px;text-align:center;box-shadow:var(--shadow);opacity:.5;filter:grayscale(1);transition:all .3s;cursor:pointer}.badge-card:active{transform:scale(.95)}.badge-card.unlocked{opacity:1;filter:none}.badge-card.unlocked:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.badge-icon{font-size:2.5rem;margin-bottom:8px}.badge-name{font-size:.9rem;font-weight:600;margin-bottom:4px}.badge-desc{font-size:.75rem;color:var(--text-muted)}.badge-progress{margin-top:8px;font-size:.7rem;color:var(--primary)}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:300;opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s}.modal-overlay.show{opacity:1;visibility:visible}.modal{background:var(--bg-card);border-radius:var(--radius-lg);padding:24px;max-width:320px;width:90%;text-align:center;transform:scale(.9);transition:transform .3s}.modal-overlay.show .modal{transform:scale(1)}.modal-icon{font-size:4rem;margin-bottom:16px}.modal-title{font-size:1.25rem;font-weight:700;margin-bottom:8px}.modal-desc{color:var(--text-secondary);margin-bottom:16px}.modal-status{padding:8px 16px;border-radius:var(--radius-sm);font-size:.9rem;font-weight:600}.modal-status.unlocked{background:#10b98133;color:var(--secondary)}.modal-status.locked{background:#ef444433;color:var(--danger)}.modal-close{margin-top:16px;padding:12px 32px;background:var(--primary);color:#fff;border:none;border-radius:var(--radius-sm);font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s}.modal-close:hover{background:var(--primary-dark)}.history-list{padding:16px}.history-date{font-size:.9rem;font-weight:600;color:var(--text-secondary);margin-bottom:8px;margin-top:16px}.history-date:first-child{margin-top:0}.history-item{background:var(--bg-card);border-radius:var(--radius-sm);padding:12px 16px;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center;position:relative;overflow:hidden;transition:transform .2s}.history-item.swiped{transform:translate(-80px)}.history-exercise{font-weight:500}.history-count{color:var(--primary);font-weight:700}.history-delete{position:absolute;right:0;top:0;bottom:0;width:80px;background:var(--danger);display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.5rem;cursor:pointer;transform:translate(100%);transition:transform .2s}.history-item.swiped .history-delete{transform:translate(0)}.calendar-section{padding:16px}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.calendar-month{font-size:1.2rem;font-weight:700;color:var(--text-primary)}.calendar-nav{width:40px;height:40px;border-radius:50%;background:var(--bg-card);border:none;color:var(--text-primary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s,transform .1s}.calendar-nav:hover{background:var(--bg-hover)}.calendar-nav:active{transform:scale(.95)}.calendar-nav svg{width:20px;height:20px}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:8px;text-align:center}.calendar-weekdays span{font-size:.75rem;color:var(--text-muted);font-weight:600}.calendar-weekdays span:first-child{color:var(--danger)}.calendar-weekdays span:last-child{color:var(--primary)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.calendar-day{aspect-ratio:1;border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:transform .1s,box-shadow .2s;position:relative}.calendar-day.empty{cursor:default}.calendar-day.future{opacity:.3;cursor:default}.calendar-day:not(.empty):not(.future):hover{transform:scale(1.1)}.calendar-day:not(.empty):not(.future):active{transform:scale(.95)}.calendar-day.level-0{background:var(--bg-card)}.calendar-day.level-1{background:#22c55e33}.calendar-day.level-2{background:#22c55e66}.calendar-day.level-3{background:#22c55e99}.calendar-day.level-4{background:var(--secondary);color:#fff}.calendar-day.level-4 .day-number{color:#fff}.calendar-day.today{box-shadow:inset 0 0 0 2px var(--primary)}.calendar-day.selected{box-shadow:0 0 0 2px var(--accent),0 4px 12px #f59e0b4d}.day-number{font-size:.85rem;font-weight:600;color:var(--text-primary)}.day-count{font-size:.65rem;color:var(--text-secondary);margin-top:2px}.calendar-day.level-4 .day-count{color:#fffc}.calendar-legend{display:flex;align-items:center;justify-content:center;gap:4px;margin-top:16px}.legend-label{font-size:.7rem;color:var(--text-muted)}.legend-box{width:12px;height:12px;border-radius:3px}.legend-box.level-0{background:var(--bg-card);border:1px solid var(--border)}.legend-box.level-1{background:#22c55e33}.legend-box.level-2{background:#22c55e66}.legend-box.level-3{background:#22c55e99}.legend-box.level-4{background:var(--secondary)}.calendar-stats{display:flex;justify-content:space-around;background:var(--bg-card);border-radius:var(--radius);padding:16px;margin-top:16px}.calendar-stats .stat-item{display:flex;flex-direction:column;align-items:center}.calendar-stats .stat-value{font-size:1.5rem;font-weight:700;color:var(--primary)}.calendar-stats .stat-label{font-size:.75rem;color:var(--text-muted);margin-top:4px}.day-detail-section{padding:0 16px 16px}.day-detail-header{font-size:1rem;font-weight:600;color:var(--text-primary);margin-bottom:12px;padding:8px 0;border-bottom:1px solid var(--border)}.day-detail-list{display:flex;flex-direction:column;gap:8px}.day-detail-item{background:var(--bg-card);border-radius:var(--radius-sm);padding:12px 16px;display:flex;justify-content:space-between;align-items:center}.detail-left{display:flex;align-items:center;gap:12px}.detail-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:var(--primary)}.detail-icon svg{width:24px;height:24px}.detail-name{font-weight:500}.detail-right{display:flex;align-items:center;gap:12px}.detail-count{font-weight:700;color:var(--secondary);font-size:1.1rem}.detail-delete{width:36px;height:36px;border-radius:50%;background:transparent;border:none;color:var(--text-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s,color .2s}.detail-delete:hover{background:#ef44441a;color:var(--danger)}.detail-delete svg{width:18px;height:18px}.confirm-dialog{position:fixed;bottom:0;left:0;right:0;background:var(--bg-card);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:24px;padding-bottom:max(24px,env(safe-area-inset-bottom));z-index:400;transform:translateY(100%);transition:transform .3s}.confirm-dialog.show{transform:translateY(0)}.confirm-title{font-size:1.1rem;font-weight:600;margin-bottom:16px;text-align:center}.confirm-buttons{display:flex;gap:12px}.confirm-btn{flex:1;padding:14px;border-radius:var(--radius-sm);font-size:1rem;font-weight:600;cursor:pointer;border:none;transition:background .2s,transform .1s}.confirm-btn:active{transform:scale(.98)}.confirm-btn.cancel{background:var(--bg-input);color:var(--text-primary)}.confirm-btn.danger{background:var(--danger);color:#fff}.settings-section{padding:16px}.setting-item{background:var(--bg-card);border-radius:var(--radius-sm);padding:16px;margin-bottom:12px;display:flex;justify-content:space-between;align-items:center;cursor:pointer;transition:background .2s}.setting-item:hover{background:var(--bg-hover)}.setting-item.clickable:active{transform:scale(.98)}.setting-label{font-weight:500}.setting-value{color:var(--text-muted)}.toggle{position:relative;width:50px;height:28px;background:var(--bg-input);border-radius:14px;cursor:pointer;transition:background .3s}.toggle.active{background:var(--primary)}.toggle:after{content:"";position:absolute;top:2px;left:2px;width:24px;height:24px;background:#fff;border-radius:50%;transition:transform .3s}.toggle.active:after{transform:translate(22px)}.add-exercise-btn{width:100%;padding:14px;background:var(--primary);color:#fff;border:none;border-radius:var(--radius-sm);font-size:1rem;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:16px;transition:background .2s}.add-exercise-btn:hover{background:var(--primary-dark)}.input-modal{background:var(--bg-card);border-radius:var(--radius-lg);padding:24px;max-width:320px;width:90%}.input-modal input{width:100%;padding:14px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:1rem;margin-bottom:16px}.input-modal input:focus{outline:none;border-color:var(--primary)}.chart-section{padding:16px}.chart-container{background:var(--bg-card);border-radius:var(--radius);padding:16px;margin-bottom:16px}.chart-title{font-size:.9rem;font-weight:600;color:var(--text-secondary);margin-bottom:16px}.chart-bars{display:flex;justify-content:space-between;align-items:flex-end;height:120px;gap:8px}.chart-bar-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;height:100%}.chart-bar{width:100%;background:linear-gradient(to top,var(--primary),var(--primary-light));border-radius:4px 4px 0 0;min-height:4px;transition:height .5s ease}.chart-label{font-size:.7rem;color:var(--text-muted);margin-top:8px}.chart-value{font-size:.7rem;color:var(--text-secondary);margin-bottom:4px}.toast{position:fixed;bottom:120px;left:50%;transform:translate(-50%) translateY(100px);background:var(--secondary);color:#fff;padding:12px 24px;border-radius:var(--radius);font-weight:600;opacity:0;transition:all .3s ease;z-index:200;text-align:center;max-width:90%;box-shadow:var(--shadow-lg)}.toast.show{transform:translate(-50%) translateY(0);opacity:1}.toast.badge-toast{background:linear-gradient(135deg,#f59e0b,#d97706)}@keyframes levelUp{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}.level-up{animation:levelUp .5s ease}@keyframes badgeUnlock{0%{transform:scale(1) rotate(0)}25%{transform:scale(1.2) rotate(-5deg)}50%{transform:scale(1.2) rotate(5deg)}75%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}.badge-unlock{animation:badgeUnlock .6s ease}.empty-state{text-align:center;padding:40px 20px;color:var(--text-muted)}.empty-icon{font-size:3rem;margin-bottom:12px}.empty-action{margin-top:16px;padding:12px 24px;background:var(--primary);color:#fff;border:none;border-radius:var(--radius-sm);font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s}.empty-action:hover{background:var(--primary-dark)}.dialog-overlay{position:fixed;inset:0;background:#00000080;z-index:350;opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s}.dialog-overlay.show{opacity:1;visibility:visible}.tab-indicator{position:absolute;bottom:0;height:3px;background:var(--primary);border-radius:3px 3px 0 0;transition:left .3s,width .3s}.page-exit{opacity:0;transform:translateY(-10px);transition:opacity .15s,transform .15s}.page-enter{animation:pageEnter .2s ease}@keyframes pageEnter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.theme-toggle{display:flex;gap:12px;margin-bottom:24px}.theme-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px;background:var(--bg-card);border:2px solid var(--border);border-radius:var(--radius);color:var(--text-primary);cursor:pointer;transition:all .2s}.theme-btn:hover{background:var(--bg-hover)}.theme-btn.active{border-color:var(--primary);background:#4f46e51a}.theme-btn span:first-child{font-size:1.5rem}.theme-btn span:last-child{font-size:.9rem;font-weight:500}.exercise-list{display:flex;flex-direction:column;gap:8px}.exercise-item{background:var(--bg-card);border-radius:var(--radius-sm);padding:12px 16px;display:flex;justify-content:space-between;align-items:center;transition:transform .2s,opacity .2s}.exercise-item .exercise-name{font-weight:500;flex:1}.exercise-increment{font-size:.74rem;color:var(--secondary);font-weight:600;background:#22c55e26;padding:4px 6px;border-radius:6px;margin-right:12px;white-space:nowrap}.exercise-actions{display:flex;gap:8px}.exercise-edit,.exercise-delete{width:36px;height:36px;border-radius:50%;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s,transform .1s;font-size:1rem;background:var(--bg-input)}.exercise-edit:hover,.exercise-delete:hover{background:var(--bg-hover)}.exercise-edit:active,.exercise-delete:active{transform:scale(.9)}.exercise-delete{background:#ef444426}.exercise-delete:hover{background:#ef444440}.exercise-modal{text-align:left}.exercise-modal .modal-title{text-align:center;margin-bottom:16px}.exercise-input{width:100%;padding:14px;background:var(--bg-input);border:2px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:1rem;transition:border-color .2s}.exercise-input:focus{outline:none;border-color:var(--primary)}.exercise-input.shake,.increment-value-input.shake{animation:shake .3s ease;border-color:var(--danger)}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-8px)}50%{transform:translate(8px)}75%{transform:translate(-4px)}}.exercise-modal-field{margin-bottom:16px}.exercise-modal-label{display:block;font-size:.85rem;color:var(--text-secondary);margin-bottom:6px}.increment-input-wrapper{display:flex;align-items:center;background:var(--bg-input);border:2px solid var(--border);border-radius:var(--radius-sm);padding:0 14px;transition:border-color .2s}.increment-input-wrapper:focus-within{border-color:var(--primary)}.increment-input{flex:1;background:transparent;border:none;color:var(--text-primary);font-size:1.2rem;font-weight:600;padding:12px 8px;text-align:center;width:60px;-moz-appearance:textfield}.increment-input::-webkit-outer-spin-button,.increment-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.increment-input:focus{outline:none}.increment-prefix,.increment-suffix{font-size:1rem;color:var(--text-secondary);font-weight:500}.increment-prefix{color:var(--secondary);font-weight:600}.increments-inputs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.increment-values{display:flex;gap:8px}.increment-slot{flex:1;display:flex;flex-direction:column;gap:4px}.exercise-modal-hint{margin:0 0 10px;font-size:.8rem;color:var(--text-secondary);line-height:1.5}.increment-slot-label{font-size:.72rem;color:var(--text-muted);font-weight:600}.increment-value-input{background:var(--bg-input);border:2px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:1rem;font-weight:600;padding:10px 8px;text-align:center;transition:border-color .2s;-moz-appearance:textfield}.increment-value-input::-webkit-outer-spin-button,.increment-value-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.increment-value-input:focus{outline:none;border-color:var(--primary)}.increment-value-input::placeholder{color:var(--text-muted);font-size:.8rem}.modal-buttons{display:flex;gap:12px;margin-top:16px}.modal-btn{flex:1;padding:12px;border-radius:var(--radius-sm);font-size:1rem;font-weight:600;cursor:pointer;border:none;transition:background .2s,transform .1s}.modal-btn:active{transform:scale(.98)}.modal-btn.cancel{background:var(--bg-input);color:var(--text-primary)}.modal-btn.cancel:hover{background:var(--bg-hover)}.modal-btn.confirm{background:var(--primary);color:#fff}.modal-btn.confirm:hover{background:var(--primary-dark)}.confirm-message{font-size:.9rem;color:var(--text-muted);margin-bottom:20px;text-align:center}.progress-fill{background:var(--gradient-level);position:relative;overflow:hidden}.progress-fill:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent);animation:shimmer 2s infinite}@keyframes shimmer{0%{left:-100%}to{left:100%}}.fire-streak{background:var(--gradient-fire);position:relative;animation:fireGlow 1.5s ease-in-out infinite alternate}.fire-streak:before{content:"";position:absolute;inset:-2px;background:var(--gradient-fire);filter:blur(8px);opacity:.6;z-index:-1;border-radius:inherit}@keyframes fireGlow{0%{box-shadow:0 0 20px #f9731666}to{box-shadow:0 0 35px #ef444499}}.streak-flames{position:absolute;bottom:100%;left:50%;transform:translate(-50%);display:flex;gap:2px}.flame{width:8px;height:20px;background:var(--gradient-fire);border-radius:50% 50% 20% 20%;animation:flicker .3s ease-in-out infinite alternate;transform-origin:bottom}.flame:nth-child(2){animation-delay:.1s;height:25px}.flame:nth-child(3){animation-delay:.2s;height:18px}@keyframes flicker{0%{transform:scaleY(1) scaleX(1)}to{transform:scaleY(1.2) scaleX(.8)}}.level-up-overlay{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:500;animation:fadeInOverlay .3s ease}@keyframes fadeInOverlay{0%{opacity:0}to{opacity:1}}.level-up-content{text-align:center;animation:levelUpBounce .5s ease}@keyframes levelUpBounce{0%{transform:scale(.5);opacity:0}50%{transform:scale(1.1)}to{transform:scale(1);opacity:1}}.level-up-icon{font-size:5rem;margin-bottom:16px;animation:starSpin 1s ease infinite}@keyframes starSpin{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(1.2)}to{transform:rotate(360deg) scale(1)}}.level-up-text{font-size:2rem;font-weight:800;background:var(--gradient-gold);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-shadow:none}.level-up-level{font-size:3.5rem;font-weight:900;color:var(--accent-light);text-shadow:0 0 30px var(--accent-glow);margin:8px 0}.particle-container{position:fixed;inset:0;pointer-events:none;z-index:400;overflow:hidden}.particle{position:absolute;font-size:1.2rem;font-weight:700;color:var(--secondary);animation:particleFly 1s ease-out forwards;text-shadow:0 0 10px var(--secondary-glow)}@keyframes particleFly{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-100px) scale(.5)}}.xp-gain{color:var(--accent);animation:xpFloat .8s ease-out forwards}@keyframes xpFloat{0%{opacity:1;transform:translateY(0) translate(-50%)}to{opacity:0;transform:translateY(-50px) translate(-50%)}}.card-shine{position:relative;overflow:hidden}.card-shine:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(45deg,transparent 40%,rgba(255,255,255,.03) 50%,transparent 60%);transform:rotate(45deg);transition:transform .5s}.card-shine:hover:before{transform:rotate(45deg) translateY(100%)}.badge-card.unlocked{position:relative}.badge-card.unlocked:after{content:"";position:absolute;inset:-2px;background:var(--gradient-gold);border-radius:inherit;z-index:-1;opacity:0;filter:blur(8px);transition:opacity .3s}.badge-card.unlocked:hover:after{opacity:.5}.confetti-container{position:fixed;inset:0;pointer-events:none;z-index:450;overflow:hidden}.confetti{position:absolute;width:10px;height:10px;animation:confettiFall 3s ease-out forwards}@keyframes confettiFall{0%{opacity:1;transform:translateY(-100vh) rotate(0)}to{opacity:0;transform:translateY(100vh) rotate(720deg)}}.status-card{background:var(--bg-card);background-image:var(--bg-glow);border:1px solid var(--border)}.streak-section{background:var(--gradient-fire);padding:16px;border-radius:var(--radius);text-align:center;position:relative;overflow:hidden;margin-bottom:16px}.streak-section:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.1) 0%,transparent 50%)}.streak-value{font-size:3rem;font-weight:900;color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.3)}.streak-label{font-size:.9rem;color:#ffffffe6;font-weight:600;text-transform:uppercase;letter-spacing:1px}.level-section{background:var(--bg-card);padding:16px;border-radius:var(--radius);border:1px solid var(--border)}.level-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.level-badge{display:flex;align-items:center;gap:8px}.level-icon{width:40px;height:40px;background:var(--gradient-level);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.2rem;box-shadow:0 0 20px var(--primary-glow)}.level-number{font-size:1.8rem;font-weight:800;background:var(--gradient-level);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.level-title{font-size:.8rem;color:var(--text-secondary)}.xp-display{text-align:right}.xp-current{font-size:1.2rem;font-weight:700;color:var(--primary-light)}.xp-needed{font-size:.75rem;color:var(--text-muted)}.level-progress .progress-bar{height:12px;background:var(--bg-input);border-radius:6px;box-shadow:inset 0 2px 4px #0003}.exercise-card{background:var(--bg-card);border:1px solid var(--border);transition:transform .2s,box-shadow .2s,border-color .2s}.exercise-card:hover{border-color:var(--primary);box-shadow:var(--shadow-glow)}.count-display{font-size:2rem;font-weight:800;background:linear-gradient(180deg,var(--text-primary) 0%,var(--text-secondary) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.count-btn.plus{background:var(--gradient-success);box-shadow:0 4px 15px var(--secondary-glow)}.count-btn.plus:active{background:var(--gradient-level);box-shadow:0 2px 10px var(--primary-glow)}.badge-grid{gap:16px}.badge-card{border:1px solid var(--border);transition:all .3s}.badge-card.unlocked{border-color:var(--accent);box-shadow:0 0 20px var(--accent-glow)}.badge-icon{font-size:3rem;margin-bottom:12px;filter:drop-shadow(0 4px 8px rgba(0,0,0,.2))}.header{background:var(--gradient-header);position:relative;overflow:hidden}.header:before{content:"";position:absolute;top:0;left:0;right:0;height:50%;background:linear-gradient(180deg,rgba(255,255,255,.15) 0%,transparent 100%)}.header h1{position:relative;z-index:1;text-shadow:0 2px 10px rgba(0,0,0,.2)}.exercise-info{display:flex;align-items:center;gap:10px}.exercise-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:var(--primary-light)}.exercise-icon svg{width:100%;height:100%}.badge-progress-section{display:flex;align-items:center;gap:12px;padding-top:16px;margin-top:16px;border-top:1px solid var(--border)}.badge-progress-icon{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--gradient-gold);border-radius:50%;box-shadow:0 0 15px var(--accent-glow)}.badge-progress-icon svg{width:20px;height:20px;color:#fff}.badge-progress-info{display:flex;flex-direction:column;gap:2px;min-width:70px}.badge-progress-count{font-size:1.1rem;font-weight:700;color:var(--accent)}.badge-progress-label{font-size:.7rem;color:var(--text-muted)}.badge-progress-bar{flex:1;height:8px;background:var(--bg-input);border-radius:4px;overflow:hidden}.badge-progress-fill{height:100%;background:var(--gradient-gold);border-radius:4px;transition:width .3s ease}.section-title{font-size:1rem;font-weight:700;margin-bottom:16px;color:var(--text-primary);display:flex;align-items:center;gap:8px;text-transform:uppercase;letter-spacing:1px}.section-title svg{width:20px;height:20px;color:var(--primary-light)}.nav-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center;pointer-events:none}.nav-icon svg{width:100%;height:100%;pointer-events:none}.nav-item span{pointer-events:none}.level-icon{color:#fff}.level-icon svg{width:22px;height:22px}.count-btn svg{width:24px;height:24px}.achievement-summary{display:flex;align-items:center;gap:16px;padding:20px;margin:16px;background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow)}.achievement-trophy{width:60px;height:60px;display:flex;align-items:center;justify-content:center;background:var(--gradient-gold);border-radius:50%;box-shadow:0 0 25px var(--accent-glow);animation:trophyPulse 2s ease-in-out infinite}@keyframes trophyPulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.achievement-trophy svg{width:32px;height:32px;color:#fff}.achievement-stats{flex:1}.achievement-main{display:flex;align-items:baseline;gap:4px}.achievement-count{font-size:2.5rem;font-weight:900;background:var(--gradient-gold);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.achievement-total{font-size:1.2rem;color:var(--text-muted);font-weight:600}.achievement-label{font-size:.75rem;color:var(--text-secondary);font-weight:600;text-transform:uppercase;letter-spacing:1px;margin-top:4px}.achievement-progress-ring{width:60px;height:60px;position:relative}.achievement-progress-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.progress-ring-bg{stroke:var(--bg-input)}.progress-ring-fill{stroke:var(--accent);stroke-linecap:round;transition:stroke-dasharray .5s ease}.progress-ring-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.8rem;font-weight:700;color:var(--accent)}.stats-row{display:flex;gap:12px;padding:0 16px;margin-bottom:20px}.stat-card{flex:1;background:var(--bg-card);border-radius:var(--radius-sm);padding:16px 12px;text-align:center;border:1px solid var(--border)}.stat-icon{width:36px;height:36px;margin:0 auto 8px;border-radius:50%;display:flex;align-items:center;justify-content:center}.stat-icon svg{width:20px;height:20px;color:#fff}.stat-icon.fire{background:var(--gradient-fire);box-shadow:0 0 15px #f9731666}.stat-icon.level{background:var(--gradient-level);box-shadow:0 0 15px var(--primary-glow)}.stat-icon.xp{background:var(--gradient-gold);box-shadow:0 0 15px var(--accent-glow)}.stat-value{font-size:1.3rem;font-weight:800;color:var(--text-primary)}.stat-label{font-size:.7rem;color:var(--text-muted);margin-top:4px}.badge-section-header{padding:0 16px;margin-bottom:4px}.badge-icon-wrapper{position:relative;display:inline-block;margin-bottom:8px}.badge-checkmark{position:absolute;bottom:-4px;right:-4px;width:20px;height:20px;background:var(--secondary);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.7rem;color:#fff;font-weight:700;border:2px solid var(--bg-card)}.badge-date{font-size:.7rem;color:var(--text-muted);margin-top:8px}.badge-modal-content{background:var(--bg-card);background-image:var(--bg-glow)}.badge-modal-content .modal-icon{font-size:5rem;margin-bottom:16px;animation:badgeFloat 3s ease-in-out infinite}@keyframes badgeFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.badge-mindmap{position:relative;width:100%;aspect-ratio:1;max-width:340px;margin:16px auto;overflow:visible}.badge-mindmap.expanded{max-width:360px}.mindmap-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:100px;height:100px;background:var(--bg-card);border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 0 30px var(--primary-glow);border:3px solid var(--primary);cursor:pointer;transition:transform .2s,box-shadow .2s;z-index:10}.mindmap-center:hover{transform:translate(-50%,-50%) scale(1.05);box-shadow:0 0 40px var(--primary-glow)}.mindmap-center:active{transform:translate(-50%,-50%) scale(.98)}.center-trophy{width:36px;height:36px;color:var(--accent)}.center-trophy svg{width:100%;height:100%}.center-count{font-size:1rem;font-weight:700;margin-top:4px}.count-unlocked{color:var(--secondary)}.count-total{color:var(--text-muted);font-size:.8rem}.center-label{font-size:.6rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px}.mindmap-nodes{position:absolute;inset:0}.mindmap-node{position:absolute;width:70px;height:70px;background:var(--bg-card);border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;border:2px solid var(--cat-color, var(--border));cursor:pointer;transition:transform .2s,box-shadow .2s,border-color .2s;z-index:5}.mindmap-node:hover{transform:scale(1.1);box-shadow:0 0 20px rgba(var(--cat-color),.3)}.mindmap-node:active{transform:scale(.95)}.mindmap-node.selected{border-width:3px;box-shadow:0 0 25px color-mix(in srgb,var(--cat-color) 50%,transparent)}.mindmap-node.complete{background:color-mix(in srgb,var(--cat-color) 20%,var(--bg-card))}.mindmap-node.top{top:0;left:50%;transform:translate(-50%)}.mindmap-node.left{top:50%;left:0;transform:translateY(-50%)}.mindmap-node.right{top:50%;right:0;transform:translateY(-50%)}.mindmap-node.bottom{bottom:0;left:50%;transform:translate(-50%)}.mindmap-node.top:hover{transform:translate(-50%) scale(1.1)}.mindmap-node.left:hover,.mindmap-node.right:hover{transform:translateY(-50%) scale(1.1)}.mindmap-node.bottom:hover{transform:translate(-50%) scale(1.1)}.mindmap-node.selected.top{transform:translate(-50%) scale(1.05)}.mindmap-node.selected.left,.mindmap-node.selected.right{transform:translateY(-50%) scale(1.05)}.mindmap-node.selected.bottom{transform:translate(-50%) scale(1.05)}.node-icon{font-size:1.5rem}.node-name{font-size:.55rem;font-weight:600;color:var(--text-secondary);margin-top:2px}.node-progress{font-size:.6rem;color:var(--cat-color);font-weight:700}.mindmap-lines{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}.mindmap-lines line{stroke:var(--border);stroke-width:2;stroke-dasharray:5 5}.mindmap-lines .main-line{stroke:var(--primary);stroke-width:2;stroke-dasharray:none;opacity:.6}.mindmap-lines .branch-line{stroke:var(--border);stroke-width:1.5;stroke-dasharray:3 3}.mindmap-lines .branch-line.unlocked{stroke:var(--secondary);stroke-dasharray:none;opacity:.8}.branch-badges{position:absolute;inset:0;z-index:4}.branch-badge{position:absolute;width:36px;height:36px;background:var(--bg-card);border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid var(--border);cursor:pointer;transition:transform .2s,box-shadow .2s,border-color .2s;transform:translate(-50%,-50%);box-shadow:0 2px 8px #0000004d}.branch-badge:hover{transform:translate(-50%,-50%) scale(1.2)}.branch-badge:active{transform:translate(-50%,-50%) scale(.9)}.branch-badge.unlocked{border-color:var(--badge-color, var(--secondary));box-shadow:0 0 10px color-mix(in srgb,var(--badge-color) 40%,transparent)}.branch-badge.locked{opacity:.7;filter:grayscale(.5);border-color:var(--border)}.branch-badge-icon{font-size:1rem}.badge-stats-row{display:flex;justify-content:center;gap:24px;padding:16px;margin-bottom:16px}.badge-stat{display:flex;flex-direction:column;align-items:center;gap:4px}.badge-stat-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--bg-card)}.badge-stat-icon.fire{color:#f97316}.badge-stat-icon.level{color:#6366f1}.badge-stat-icon.xp{color:#f59e0b}.badge-stat-icon svg{width:20px;height:20px}.badge-stat-value{font-size:1.2rem;font-weight:700;color:var(--text-primary)}.badge-stat-label{font-size:.7rem;color:var(--text-muted)}.badge-category-panel{margin:0 16px 16px;background:var(--bg-card);border-radius:var(--radius);overflow:hidden}.panel-header{display:flex;align-items:center;gap:8px;padding:16px;background:color-mix(in srgb,var(--cat-color, var(--primary)) 15%,var(--bg-card));border-bottom:1px solid var(--border)}.panel-icon{font-size:1.5rem}.panel-title{flex:1;font-size:1rem;font-weight:700;color:var(--text-primary)}.panel-progress{font-size:.9rem;font-weight:600;color:var(--cat-color, var(--primary))}.panel-badges{max-height:400px;overflow-y:auto}.badge-item{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .2s}.badge-item:last-child{border-bottom:none}.badge-item:hover{background:var(--bg-hover)}.badge-item:active{background:var(--bg-input)}.badge-item.locked{opacity:.6}.badge-item.locked .badge-item-icon{filter:grayscale(1)}.badge-item-icon{font-size:2rem;width:48px;text-align:center;flex-shrink:0}.badge-item-info{flex:1;min-width:0}.badge-item-name{font-weight:600;color:var(--text-primary);margin-bottom:2px}.badge-item-desc{font-size:.8rem;color:var(--text-muted)}.badge-item-status{flex-shrink:0}.status-unlocked{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--secondary);color:#fff;border-radius:50%;font-size:.9rem;font-weight:700}.status-progress{font-size:.75rem;color:var(--text-secondary);background:var(--bg-input);padding:4px 8px;border-radius:12px}.status-locked{font-size:1.2rem;opacity:.5}.quest-section{padding:0 16px;margin-bottom:20px}.quest-list{display:flex;flex-direction:column;gap:10px}.quest-card{display:flex;align-items:center;gap:12px;background:var(--bg-card);border:2px solid var(--border);border-radius:var(--radius);padding:14px;transition:all .3s}.quest-card.completed{border-color:var(--secondary);background:linear-gradient(135deg,rgba(34,197,94,.1) 0%,var(--bg-card) 100%)}.quest-card.claimed{opacity:.7}.quest-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--bg-input);border-radius:50%;flex-shrink:0}.quest-card.completed .quest-icon{background:var(--gradient-success)}.quest-icon svg{width:22px;height:22px;color:var(--text-secondary)}.quest-card.completed .quest-icon svg{color:#fff}.quest-info{flex:1;min-width:0}.quest-title{font-size:.9rem;font-weight:600;margin-bottom:6px;color:var(--text-primary)}.quest-progress-bar{height:6px;background:var(--bg-input);border-radius:3px;overflow:hidden;margin-bottom:4px}.quest-progress-fill{height:100%;background:var(--gradient-level);border-radius:3px;transition:width .3s ease}.quest-card.completed .quest-progress-fill{background:var(--gradient-success)}.quest-progress-text{font-size:.75rem;color:var(--text-muted)}.quest-reward{flex-shrink:0}.quest-xp-label{font-size:.8rem;color:var(--text-muted);padding:6px 10px;background:var(--bg-input);border-radius:var(--radius-sm)}.quest-claim-btn{background:var(--gradient-gold);color:#fff;border:none;padding:8px 14px;border-radius:var(--radius-sm);font-size:.85rem;font-weight:700;cursor:pointer;animation:questPulse 1.5s ease-in-out infinite;box-shadow:0 0 15px var(--accent-glow)}@keyframes questPulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.quest-claim-btn:active{transform:scale(.95)}.quest-claimed-badge{width:32px;height:32px;background:var(--secondary);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700}.section-desc{font-size:.85rem;color:var(--text-muted);margin-bottom:12px;line-height:1.4}.quest-manage-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.quest-manage-item{display:flex;justify-content:space-between;align-items:center;background:var(--bg-card);border-radius:var(--radius-sm);padding:12px 16px;transition:transform .2s,opacity .2s}.quest-manage-name{font-weight:500;color:var(--text-primary)}.quest-modal{text-align:left}.quest-form{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.quest-form-label{font-size:.85rem;font-weight:600;color:var(--text-secondary)}.quest-select,.quest-input{width:100%;padding:12px;background:var(--bg-input);border:2px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:1rem;transition:border-color .2s}.quest-select:focus,.quest-input:focus{outline:none;border-color:var(--primary)}.quest-input.shake{animation:shake .3s ease;border-color:var(--danger)}.quest-list-compact{display:flex;flex-direction:column;gap:8px}.quest-row{display:flex;align-items:center;justify-content:space-between;background:var(--bg-card);border-radius:var(--radius-sm);padding:10px 12px;gap:12px}.quest-row-left{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.quest-row-icon{width:28px;height:28px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.quest-row-icon svg{width:20px;height:20px;color:var(--primary-light)}.quest-row-info{display:flex;flex-direction:column;min-width:0}.quest-row-name{font-size:.85rem;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.quest-row-count{font-size:.7rem;color:var(--text-muted)}.quest-row-difficulties{display:flex;gap:6px;flex-shrink:0}.quest-chip{width:40px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:6px;font-size:.7rem;font-weight:700;color:var(--text-muted);background:var(--bg-input);transition:all .2s}.quest-chip.empty{opacity:.3}.quest-chip.difficulty-must{border:2px solid var(--secondary);color:var(--secondary)}.quest-chip.difficulty-normal{border:2px solid var(--primary);color:var(--primary)}.quest-chip.difficulty-challenge{border:2px solid var(--accent);color:var(--accent)}.quest-chip.completed{color:#fff;cursor:pointer;animation:chipPulse 1.5s ease-in-out infinite}.quest-chip.completed.difficulty-must{background:var(--secondary)}.quest-chip.completed.difficulty-normal{background:var(--primary)}.quest-chip.completed.difficulty-challenge{background:var(--accent)}@keyframes chipPulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.quest-chip.claimed{opacity:.5;animation:none;cursor:default}.claim-all-btn{margin-left:auto;padding:4px 12px;font-size:.75rem;font-weight:700;color:#fff;background:var(--gradient-gold);border:none;border-radius:var(--radius-sm);cursor:pointer;animation:questPulse 1.5s ease-in-out infinite;box-shadow:0 0 10px var(--accent-glow);white-space:nowrap;min-height:28px}.claim-all-btn:disabled{opacity:.5;cursor:default;animation:none}.claim-all-btn:active:not(:disabled){transform:scale(.95)}.quest-difficulty-legend{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:16px;padding:12px;background:var(--bg-card);border-radius:var(--radius-sm)}.legend-item{display:flex;align-items:center;gap:6px;font-size:.8rem;color:var(--text-secondary)}.legend-badge{font-size:.65rem;font-weight:700;color:#fff;padding:2px 6px;border-radius:4px}.quest-exercise-settings{display:flex;flex-direction:column;gap:12px}.quest-exercise-setting{background:var(--bg-card);border-radius:var(--radius);padding:14px;border:1px solid var(--border)}.quest-exercise-setting .quest-exercise-header{margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid var(--border)}.quest-exercise-setting .quest-exercise-icon{width:32px;height:32px}.quest-exercise-setting .quest-exercise-icon svg{width:18px;height:18px}.quest-exercise-setting .quest-exercise-name{font-size:.9rem}.quest-difficulty-inputs{display:flex;gap:8px;margin-bottom:12px}.quest-difficulty-input-group{flex:1;display:flex;flex-direction:column;gap:4px}.quest-difficulty-label{font-size:.7rem;font-weight:700;text-align:center}.quest-difficulty-input{width:100%;padding:10px 6px;background:var(--bg-input);border:2px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:.9rem;text-align:center;transition:border-color .2s}.quest-difficulty-input:focus{outline:none;border-color:var(--primary)}.quest-difficulty-input::placeholder{color:var(--text-muted);font-size:.8rem}.quest-save-btn{width:100%;padding:10px;background:var(--primary);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s}.quest-save-btn:hover{background:var(--primary-dark)}.quest-save-btn:active{transform:scale(.98)}.quest-save-btn:disabled{background:var(--secondary);cursor:default}.skill-tree-stats{display:flex;justify-content:center;align-items:center;gap:24px;padding:12px 16px;background:var(--bg-card);border-bottom:1px solid var(--border)}.skill-stat{display:flex;align-items:center;gap:8px}.skill-stat.main{padding:8px 16px;background:var(--bg-input);border-radius:var(--radius-sm)}.skill-stat-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center}.skill-stat-icon svg{width:20px;height:20px}.skill-stat-icon.fire{color:#f97316}.skill-stat-icon.trophy{color:#f59e0b}.skill-stat-icon.level{color:#6366f1}.skill-stat-value{font-size:1.1rem;font-weight:700;color:var(--text-primary)}.skill-stat-total{font-size:.85rem;font-weight:600;color:var(--text-muted)}.skill-tree-viewport{position:relative;width:100%;height:calc(100vh - 200px);height:calc(100dvh - 200px);overflow:hidden;background:var(--bg-dark);background-image:radial-gradient(circle at 50% 50%,rgba(99,102,241,.08) 0%,transparent 60%),radial-gradient(circle at 20% 80%,rgba(34,197,94,.05) 0%,transparent 40%),radial-gradient(circle at 80% 20%,rgba(245,158,11,.05) 0%,transparent 40%);cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}.skill-tree-canvas{position:absolute;width:1400px;height:1400px;transform-origin:0 0;will-change:transform}.skill-tree-canvas:before{content:"";position:absolute;inset:0;background-image:var(--starfield);background-size:cover;pointer-events:none;opacity:.6}.skill-tree-lines{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.tree-line{stroke-width:1.8;fill:none;transition:stroke .3s,opacity .3s;stroke-linecap:round;vector-effect:non-scaling-stroke}.tree-line.locked{stroke-width:1.2}.tree-line.unlocked{stroke-width:1.8}.tree-line.support{stroke-width:1.1;stroke-dasharray:4 6}@keyframes twinkle{0%,to{opacity:.3}50%{opacity:1}}.skill-tree-canvas svg.skill-tree-lines circle.star{animation:twinkle 3s ease-in-out infinite}.skill-node{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;cursor:pointer;transition:transform .2s;z-index:2}.skill-node:hover{transform:translate(-50%,-50%) scale(1.1);z-index:10}.skill-node:active{transform:translate(-50%,-50%) scale(.95)}.node-inner{display:flex;align-items:center;justify-content:center;border-radius:50%;transition:box-shadow .2s,border-color .2s}.node-inner.center{width:100px;height:100px;background:linear-gradient(135deg,#1a1f35,#2a3150);border:4px solid var(--accent);box-shadow:0 0 40px var(--accent-glow),inset 0 0 20px #f59e0b33}.node-inner.center .node-icon{width:48px;height:48px;color:var(--accent)}.node-inner.center .node-icon svg{width:100%;height:100%}.node-inner.category{width:80px;height:80px;background:linear-gradient(135deg,var(--bg-card) 0%,var(--bg-input) 100%);border:3px solid var(--cat-color);box-shadow:0 0 25px color-mix(in srgb,var(--cat-color) 40%,transparent)}.node-inner.category .node-icon{font-size:2rem}.node-inner.badge{width:48px;height:48px;background:var(--bg-card);border:2px solid var(--border)}.node-inner.badge .node-icon{font-size:1.3rem;opacity:.4;filter:grayscale(1)}.standard-node .node-inner.badge{width:48px;height:48px}.standard-node .node-inner.badge .node-icon{font-size:1.3rem}.small-node .node-inner.badge{width:36px;height:36px}.small-node .node-inner.badge .node-icon{font-size:1rem}.small-node .node-lock{width:16px;height:16px;font-size:.6rem;bottom:-2px;right:-2px}.milestone-node .node-inner.badge{width:64px;height:64px;clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);border:none;background:linear-gradient(135deg,var(--bg-card) 0%,var(--bg-input) 100%)}.milestone-node .node-inner.badge .node-icon{font-size:1.6rem}.milestone-node.unlocked .node-inner.badge{background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 30%,var(--bg-card)),color-mix(in srgb,var(--accent) 15%,var(--bg-input)));box-shadow:0 0 25px var(--accent-glow)}.milestone-node .node-lock{bottom:2px;right:6px}.subcore-node .node-inner.subcore{width:60px;height:60px;background:linear-gradient(135deg,var(--bg-card) 0%,var(--bg-input) 100%);border:2px solid #22c55e;box-shadow:0 0 20px #22c55e4d}.subcore-node .node-inner.subcore .node-icon{font-size:1.6rem}.subcore-node .node-inner.subcore .node-icon svg{width:28px;height:28px;color:#22c55e}.subcore-node .node-label{font-size:.6rem;color:#22c55e}.badge-node.locked .node-inner.badge{background:#06b6d426;border-color:#06b6d466}.badge-node.locked .node-inner.badge .node-icon{opacity:.5;filter:grayscale(.8);color:#06b6d499}.milestone-node.locked .node-inner.badge{background:linear-gradient(135deg,#06b6d433,#06b6d41a)}.node-inner.badge.unlocked{border-color:var(--badge-color);box-shadow:0 0 15px color-mix(in srgb,var(--badge-color) 40%,transparent);background:linear-gradient(135deg,var(--bg-card) 0%,color-mix(in srgb,var(--badge-color) 10%,var(--bg-card)) 100%)}.node-inner.badge.unlocked .node-icon{opacity:1;filter:none}.node-label{margin-top:8px;font-size:.7rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;text-align:center;white-space:nowrap}.center-node .node-label{font-size:.6rem;color:var(--accent)}.category-node .node-label{color:var(--cat-color)}.node-progress{font-size:.65rem;font-weight:600;color:var(--text-muted);margin-top:2px}.node-lock{position:absolute;bottom:-4px;right:-4px;font-size:.8rem;background:var(--bg-card);border-radius:50%;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border)}.category-node.complete .node-inner.category{background:linear-gradient(135deg,color-mix(in srgb,var(--cat-color) 20%,var(--bg-card)),color-mix(in srgb,var(--cat-color) 10%,var(--bg-input)));box-shadow:0 0 30px color-mix(in srgb,var(--cat-color) 50%,transparent),inset 0 0 15px color-mix(in srgb,var(--cat-color) 20%,transparent)}.zoom-controls{position:absolute;bottom:16px;right:16px;display:flex;flex-direction:column;gap:8px;z-index:20}.zoom-btn{width:44px;height:44px;border-radius:50%;background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);font-size:1.2rem;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s,transform .1s;box-shadow:var(--shadow)}.zoom-btn:hover{background:var(--bg-hover)}.zoom-btn:active{transform:scale(.9)}.zoom-btn svg{width:20px;height:20px}.minimap{position:absolute;bottom:16px;left:16px;width:60px;height:60px;background:var(--bg-card);border:1px solid var(--border);border-radius:8px;overflow:hidden;z-index:20;box-shadow:var(--shadow)}.minimap:before{content:"";position:absolute;top:50%;left:50%;width:4px;height:4px;background:var(--accent);border-radius:50%;transform:translate(-50%,-50%)}.minimap-viewport{position:absolute;border:2px solid var(--primary);background:#6366f133;border-radius:2px;pointer-events:none}.badge-node.unlocked .node-inner.badge{animation:badgeGlow 3s ease-in-out infinite}@keyframes badgeGlow{0%,to{box-shadow:0 0 15px color-mix(in srgb,var(--badge-color) 40%,transparent)}50%{box-shadow:0 0 25px color-mix(in srgb,var(--badge-color) 60%,transparent)}}.center-node .node-inner.center{animation:centerPulse 4s ease-in-out infinite}@keyframes centerPulse{0%,to{box-shadow:0 0 40px var(--accent-glow),inset 0 0 20px #f59e0b33}50%{box-shadow:0 0 60px var(--accent-glow),inset 0 0 30px #f59e0b4d}}@media(max-width:400px){.skill-tree-stats{gap:16px;padding:10px 12px}.skill-stat-value{font-size:1rem}.zoom-controls{bottom:12px;right:12px}.zoom-btn{width:40px;height:40px}.minimap{width:50px;height:50px}.exercise-controls{grid-template-columns:max-content minmax(44px,1fr) max-content;gap:8px}.count-btn.secondary{width:38px;height:38px;font-size:1rem}.count-btn{width:44px;height:44px;font-size:1.2rem}.btn-label{font-size:.55rem}.count-display{font-size:1.5rem;min-width:44px}}.particle{position:fixed;width:8px;height:8px;border-radius:50%;background:var(--color);pointer-events:none;animation:particleFade 1s ease-out forwards}@keyframes particleFade{0%{opacity:1;transform:scale(0)}50%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.5)}}.level-up-effect{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1000;pointer-events:none}.level-up-content{display:flex;flex-direction:column;align-items:center;gap:12px}.level-up-icon{font-size:4rem;animation:levelUpIconScale .3s ease-out forwards}.level-up-text{font-size:1.5rem;font-weight:700;color:var(--text-primary);text-shadow:0 2px 4px rgba(0,0,0,.3)}@keyframes levelUpIconScale{0%{transform:scale(0)}50%{transform:scale(1.5)}to{transform:scale(0)}}.level-up-effect.show .level-up-content{animation:levelUpContentEnter .4s ease-out forwards}.level-up-effect.exit .level-up-content{animation:levelUpContentExit .3s ease-in forwards}@keyframes levelUpContentEnter{0%{transform:scale(0);opacity:0}50%{transform:scale(1);opacity:1}to{transform:scale(1);opacity:0}}@keyframes levelUpContentExit{0%{transform:scale(1);opacity:1}to{transform:scale(1.2);opacity:0}}.badge-unlock-effect{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1000;pointer-events:none}.badge-unlock-content{display:flex;flex-direction:column;align-items:center;gap:12px}.badge-unlock-effect .badge-icon{font-size:3rem;animation:badgeIconPop .4s ease-out forwards}.badge-unlock-effect .badge-name{font-size:1.2rem;font-weight:700;color:var(--text-primary)}@keyframes badgeIconPop{0%{transform:scale(0) rotate(-180deg)}50%{transform:scale(1.2) rotate(0)}to{transform:scale(0)}}.badge-unlock-effect.show .badge-unlock-content{animation:badgeUnlockContentEnter .4s ease-out forwards}.badge-unlock-effect.exit .badge-unlock-content{animation:badgeUnlockContentExit .3s ease-in forwards}@keyframes badgeUnlockContentEnter{0%{transform:scale(0);opacity:0}50%{transform:scale(1);opacity:1}to{transform:scale(1);opacity:0}}@keyframes badgeUnlockContentExit{0%{transform:scale(1);opacity:1}to{transform:scale(1.2);opacity:0}}.stage{position:absolute;opacity:0;transition:opacity .3s,transform .3s}.stage.active{opacity:1}.stage.hidden{opacity:0;pointer-events:none}
