:root{--bg-grad-start: #dce8f8;--bg-grad-mid: #e8eef8;--bg-grad-end: #f0e8f5;--glass-bg: rgba(255, 255, 255, .55);--glass-bg-strong: rgba(255, 255, 255, .72);--glass-border: rgba(255, 255, 255, .75);--glass-border-subtle: rgba(200, 215, 240, .45);--primary: #5b8def;--primary-rgb: 91, 141, 239;--primary-light: #7da8f5;--primary-dark: #3d6fd4;--primary-glow: rgba(var(--primary-rgb), .28);--accent: #a78bfa;--accent-light: rgba(167, 139, 250, .15);--success: #34d399;--success-glow: rgba(52, 211, 153, .3);--danger: #f87171;--warning: #fbbf24;--text-primary: #1e2d4a;--text-secondary: #4a6080;--text-muted: #8fa3c0;--text-on-primary: #ffffff;--border-radius-sm: 10px;--border-radius: 16px;--border-radius-lg: 22px;--border-radius-full: 9999px;--shadow-sm: 0 2px 8px rgba(var(--primary-rgb), .08), 0 1px 3px rgba(0, 0, 0, .06);--shadow-md: 0 4px 16px rgba(var(--primary-rgb), .12), 0 2px 6px rgba(0, 0, 0, .07);--shadow-lg: 0 8px 32px rgba(var(--primary-rgb), .15), 0 4px 12px rgba(0, 0, 0, .08);--shadow-glow: 0 0 20px rgba(var(--primary-rgb), .25);--transition-fast: all .15s ease;--transition: all .25s ease;--transition-slow: all .4s ease;--cell-size: 10px;--grid-gap: 1px;--grid-border: rgba(200, 215, 240, .3);--time-header-bg: rgba(255, 255, 255, .4);--blob-1: #a5c8f8;--blob-2: #c4b5fd}[data-theme=dark]{--bg-grad-start: #0f172a;--bg-grad-mid: #1e293b;--bg-grad-end: #020617;--glass-bg: rgba(30, 41, 59, .45);--glass-bg-strong: rgba(30, 41, 59, .7);--glass-border: rgba(255, 255, 255, .12);--glass-border-subtle: rgba(255, 255, 255, .08);--primary: #38bdf8;--primary-rgb: 56, 189, 248;--primary-light: #7dd3fc;--primary-dark: #0ea5e9;--primary-glow: rgba(var(--primary-rgb), .2);--text-primary: #f8fafc;--text-secondary: #cbd5e1;--text-muted: #64748b;--blob-1: #1e40af;--blob-2: #4c1d95;--grid-border: rgba(255, 255, 255, .05);--time-header-bg: rgba(15, 23, 42, .4)}[data-theme=cherry]{--bg-grad-start: #fff1f2;--bg-grad-mid: #ffe4e6;--bg-grad-end: #fecdd3;--primary: #fb7185;--primary-rgb: 251, 113, 133;--primary-light: #fda4af;--primary-dark: #f43f5e;--primary-glow: rgba(var(--primary-rgb), .2);--accent: #f472b6;--text-primary: #4c0519;--text-secondary: #881337;--text-muted: #be123c80;--blob-1: #fecdd3;--blob-2: #fbcfe8;--glass-bg: rgba(255, 255, 255, .6);--glass-border: rgba(251, 113, 133, .2)}[data-theme=ocean]{--bg-grad-start: #f0f9ff;--bg-grad-mid: #e0f2fe;--bg-grad-end: #bae6fd;--primary: #0ea5e9;--primary-rgb: 14, 165, 233;--primary-light: #38bdf8;--primary-dark: #0284c7;--primary-glow: rgba(var(--primary-rgb), .2);--accent: #2dd4bf;--text-primary: #082f49;--text-secondary: #0c4a6e;--text-muted: #07598580;--blob-1: #7dd3fc;--blob-2: #99f6e4;--glass-bg: rgba(255, 255, 255, .5);--glass-border: rgba(14, 165, 233, .2)}[data-theme=city]{--bg-grad-start: #18181b;--bg-grad-mid: #27272a;--bg-grad-end: #09090b;--primary: #f59e0b;--primary-rgb: 245, 158, 11;--primary-light: #fbbf24;--primary-dark: #d97706;--primary-glow: rgba(var(--primary-rgb), .2);--accent: #6366f1;--text-primary: #fafafa;--text-secondary: #d4d4d8;--text-muted: #71717a;--blob-1: #3f3f46;--blob-2: #4338ca;--glass-bg: rgba(39, 39, 42, .6);--glass-bg-strong: rgba(39, 39, 42, .8);--glass-border: rgba(255, 255, 255, .1);--grid-border: rgba(255, 255, 255, .05)}[data-theme=forest]{--bg-grad-start: #f0fdf4;--bg-grad-mid: #dcfce7;--bg-grad-end: #bbf7d0;--primary: #16a34a;--primary-rgb: 22, 163, 74;--primary-light: #4ade80;--primary-dark: #15803d;--primary-glow: rgba(var(--primary-rgb), .2);--accent: #ca8a04;--text-primary: #052e16;--text-secondary: #064e3b;--text-muted: #14532d80;--blob-1: #bbf7d0;--blob-2: #fef08a;--glass-bg: rgba(255, 255, 255, .55);--glass-border: rgba(22, 163, 74, .2)}*{box-sizing:border-box;margin:0;padding:0;-webkit-user-select:none;user-select:none}input,textarea{-webkit-user-select:text;user-select:text}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:linear-gradient(135deg,var(--bg-grad-start) 0%,var(--bg-grad-mid) 50%,var(--bg-grad-end) 100%);background-attachment:fixed;color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased;min-height:100vh}body:before,body:after{content:"";position:fixed;border-radius:50%;filter:blur(80px);opacity:.35;pointer-events:none;z-index:0}body:before{width:600px;height:600px;background:radial-gradient(circle,var(--blob-1) 0%,transparent 70%);top:-150px;right:-150px}body:after{width:500px;height:500px;background:radial-gradient(circle,var(--blob-2) 0%,transparent 70%);bottom:-100px;left:-100px}.app-container{max-width:1300px;margin:0 auto;padding:1.5rem 2rem 3rem;display:flex;flex-direction:column;gap:1.25rem;position:relative;z-index:1}.card{background:var(--glass-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-radius:var(--border-radius);padding:1.5rem;box-shadow:var(--shadow-md);border:1px solid var(--glass-border);transition:var(--transition);animation:fadeInUp .4s ease both}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.app-header{background:var(--glass-bg-strong);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:var(--border-radius-lg);border:1px solid var(--glass-border);box-shadow:var(--shadow-md);padding:1rem 1.5rem;display:flex;flex-direction:column;align-items:center;gap:.9rem;animation:fadeInUp .3s ease both;position:sticky;top:1rem;z-index:1000}.header-top-row{display:flex;justify-content:space-between;align-items:center;width:100%}.planner-title{display:flex;align-items:center;gap:.75rem}.mascot-img{width:44px;height:44px;border-radius:12px;box-shadow:0 4px 12px rgba(var(--primary-rgb),.2);border:1px solid var(--glass-border);object-fit:cover;animation:float 3s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.title-text{font-size:1.45rem;font-weight:800;background:linear-gradient(135deg,var(--text-primary),var(--primary-dark));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.02em}.header-top-row h1:before{display:none}.user-info{display:flex;align-items:center;gap:.75rem;font-size:.85rem}.user-email{color:var(--text-secondary);font-weight:500}.btn-logout{background:#f871711a;border:1px solid rgba(248,113,113,.3);padding:.35rem .8rem;border-radius:var(--border-radius-full);color:#e05252;cursor:pointer;font-size:.8rem;font-weight:600;transition:var(--transition-fast)}.btn-logout:hover{background:#f8717133;border-color:#f8717180}.header-right{display:flex;align-items:center;gap:1.5rem}.theme-selector{display:flex;align-items:center;gap:.8rem;background:#ffffff4d;padding:4px 10px;border-radius:var(--border-radius-full);border:1px solid var(--glass-border-subtle);color:var(--text-secondary)}.theme-options{display:flex;gap:6px}.btn-theme-dot{width:14px;height:14px;border-radius:50%;border:1.5px solid rgba(255,255,255,.5);cursor:pointer;transition:var(--transition-fast);padding:0}.btn-theme-dot:hover{transform:scale(1.3);box-shadow:0 0 10px #fff6}.btn-theme-dot.active{transform:scale(1.3);border-color:var(--text-primary);box-shadow:0 0 0 2px var(--glass-bg-strong),0 0 8px #0000001a}.header-bottom-row{display:flex;justify-content:space-between;align-items:center;width:100%;margin-top:.2rem}.tab-group{display:flex;background:#ffffff73;border:1px solid var(--glass-border);border-radius:var(--border-radius-full);padding:3px;gap:2px;box-shadow:inset 0 1px 3px #0000000f}.btn-tab{background:none;border:none;padding:.45rem 1.1rem;font-size:.88rem;font-weight:600;color:var(--text-secondary);cursor:pointer;border-radius:var(--border-radius-full);transition:var(--transition-fast);white-space:nowrap}.btn-tab:hover{color:var(--primary);background:rgba(var(--primary-rgb),.08)}.btn-tab.active{background:linear-gradient(135deg,var(--primary),var(--primary-light));color:var(--text-on-primary);box-shadow:0 2px 10px var(--primary-glow)}.date-navigator{display:flex;align-items:center;gap:.8rem;background:#ffffff80;padding:.4rem 1rem;border-radius:var(--border-radius-full);box-shadow:var(--shadow-sm);border:1px solid var(--glass-border)}.current-date-display{font-size:1rem;font-weight:700;color:var(--text-primary);min-width:140px;text-align:center;letter-spacing:-.01em}.btn-date-nav{background:none;border:none;font-size:.85rem;color:var(--text-secondary);cursor:pointer;padding:4px 10px;border-radius:var(--border-radius-full);transition:var(--transition-fast);font-weight:600}.btn-date-nav:hover{background:rgba(var(--primary-rgb),.1);color:var(--primary)}.btn-today{background:var(--accent-light);color:var(--accent)}.btn-date-nav.disabled{opacity:0;pointer-events:none}.progress-card{display:flex;flex-direction:column;gap:1rem}.progress-info{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.goal-input-group{display:flex;align-items:center;gap:.6rem;font-size:.95rem;font-weight:600;color:var(--text-primary)}.goal-input-group strong{display:flex;align-items:center;gap:.4rem;color:var(--primary-dark);font-size:.95rem}.goal-input-group input{width:72px;padding:.35rem .6rem;text-align:right;border:1.5px solid rgba(var(--primary-rgb),.25);border-radius:var(--border-radius-sm);background:#fff9;color:var(--text-primary);font-size:.95rem;font-weight:600;font-family:Inter,sans-serif;transition:var(--transition-fast)}.goal-input-group input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow);background:#ffffffd9}.time-summary{display:flex;gap:1.5rem;font-weight:600;font-size:.92rem}.time-summary .actual{color:var(--primary);font-size:1.15rem;font-weight:700}.time-summary .percent{color:var(--success);font-size:1.15rem;font-weight:700}.progress-bar-container{width:100%;height:10px;background:#c8d7f066;border-radius:var(--border-radius-full);overflow:hidden;box-shadow:inset 0 1px 3px #00000014}.progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--primary-light),var(--success));background-size:200% 100%;border-radius:var(--border-radius-full);transition:width .6s cubic-bezier(.4,0,.2,1);box-shadow:0 0 10px var(--primary-glow),0 0 4px var(--success-glow);animation:shimmer 2.5s ease-in-out infinite}@keyframes shimmer{0%,to{background-position:200% center}50%{background-position:0% center}}.add-form-container{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;position:relative;z-index:100}.add-form-container>strong{font-size:.92rem;font-weight:700;color:var(--primary-dark);white-space:nowrap}.input-group{display:flex;gap:.6rem;flex:1}.input-group input,.add-form-container input[type=text]{flex:1;padding:.6rem .9rem;border:1.5px solid rgba(var(--primary-rgb),.2);border-radius:var(--border-radius-sm);background:#fff9;color:var(--text-primary);font-size:.9rem;font-family:Inter,sans-serif;transition:var(--transition);min-width:130px}.input-group input:focus,.add-form-container input[type=text]:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow);background:#ffffffd9}.input-group input::placeholder,.add-form-container input[type=text]::placeholder{color:var(--text-muted)}.btn-add{padding:.6rem 1.4rem;background:linear-gradient(135deg,var(--primary),var(--primary-light));color:#fff;border:none;border-radius:var(--border-radius-sm);cursor:pointer;font-weight:700;font-size:.92rem;font-family:Inter,sans-serif;box-shadow:0 3px 12px var(--primary-glow);transition:var(--transition);white-space:nowrap}.btn-add:hover{transform:scale(1.06);box-shadow:0 5px 20px var(--primary-glow)}.color-picker-container{position:relative;display:flex;align-items:center;justify-content:center;padding:0 .6rem;border-left:1px solid var(--glass-border-subtle);border-right:1px solid var(--glass-border-subtle)}.color-palette-popup{position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);background:var(--glass-bg-strong);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border);border-radius:var(--border-radius);box-shadow:var(--shadow-lg);padding:.8rem;display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;z-index:200;animation:popIn .15s ease}@keyframes popIn{0%{opacity:0;transform:translate(-50%) scale(.92)}to{opacity:1;transform:translate(-50%) scale(1)}}.color-palette-popup:after{content:"";position:absolute;top:-6px;left:50%;transform:translate(-50%) rotate(45deg);width:10px;height:10px;background:var(--glass-bg-strong);border-left:1px solid var(--glass-border);border-top:1px solid var(--glass-border)}.color-btn{width:26px;height:26px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:var(--transition-fast);padding:0}.color-btn:hover{transform:scale(1.2);box-shadow:0 3px 8px #00000040}.color-btn.selected,.color-btn.selected-in-palette{border-color:var(--text-primary);box-shadow:0 0 0 2px #fff inset,0 3px 8px #0003}.color-btn.selected-in-palette{transform:scale(1.2)}.study-table-container{overflow-x:auto;padding-bottom:.5rem}.study-table{display:flex;flex-direction:column;min-width:max-content;border:1px solid var(--glass-border);border-radius:var(--border-radius);background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:var(--shadow-md);z-index:1}.table-header{display:flex;background:var(--time-header-bg);border-bottom:1px solid var(--glass-border-subtle)}.cell-info-header{display:flex;padding:.7rem 1rem;font-weight:700;font-size:.82rem;color:var(--text-secondary);width:250px;flex-shrink:0;border-right:1px solid var(--glass-border-subtle);letter-spacing:.02em;text-transform:uppercase}.time-header-track{display:flex;flex:1}.hour-marker{width:calc((var(--cell-size) * 6) + (var(--grid-gap) * 6));flex-shrink:0;padding:.4rem .2rem;font-size:.72rem;font-weight:600;color:var(--text-muted);border-right:1px solid var(--grid-border);text-align:left}.study-row{display:flex;border-bottom:1px solid var(--grid-border);transition:background-color .2s;animation:fadeInUp .35s ease both;position:relative}.study-row:hover{background-color:#ffffff4d;z-index:50}.subject-info{display:flex;align-items:center;padding:.7rem 1rem;width:250px;flex-shrink:0;border-right:1px solid var(--glass-border-subtle);gap:.8rem}.color-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0;box-shadow:0 0 5px currentColor}.text-group{flex:1;display:flex;flex-direction:column;overflow:hidden}.subject-name{font-size:.9rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-primary)}.subject-content{font-size:.78rem;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn-delete-small{background:none;border:none;font-size:1rem;cursor:pointer;opacity:0;transition:var(--transition-fast);color:var(--text-muted)}.study-row:hover .btn-delete-small{opacity:.6}.btn-delete-small:hover{opacity:1!important;color:var(--danger)}.time-track{display:flex;gap:var(--grid-gap);padding:.5rem;background:#f8faff4d}.time-slot{width:var(--cell-size);height:100%;min-height:24px;background-color:#c8d7f059;border-radius:3px;cursor:crosshair;transition:transform .1s ease;position:relative}.time-slot.hour-end{margin-right:2px}.time-slot:hover{transform:scale(1.15);background-color:rgba(var(--primary-rgb),.2)}.time-slot:after{content:attr(data-time-range);position:absolute;bottom:130%;left:50%;transform:translate(-50%) translateY(5px);background:linear-gradient(135deg,var(--primary-dark),var(--primary));color:#fff;padding:4px 8px;border-radius:8px;font-size:.72rem;font-weight:600;white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden;transition:all .2s ease;z-index:200;box-shadow:0 4px 10px rgba(var(--primary-rgb),.3)}.time-slot:before{content:"";position:absolute;bottom:130%;left:50%;transform:translate(-50%) translateY(5px);border-width:5px;border-style:solid;border-color:var(--primary-dark) transparent transparent transparent;pointer-events:none;opacity:0;visibility:hidden;transition:all .2s ease;z-index:200;margin-bottom:-10px}.time-slot:hover:after,.time-slot:hover:before{transform:translate(-50%) translateY(0);opacity:1;visibility:visible}.btn-auto-fill{background:rgba(var(--primary-rgb),.1);border:1px solid rgba(var(--primary-rgb),.25);border-radius:var(--border-radius-sm);font-size:.75rem;font-family:Inter,sans-serif;color:var(--primary);cursor:pointer;padding:2px 6px;margin-right:.2rem;transition:var(--transition-fast);flex-shrink:0;font-weight:600}.btn-auto-fill:hover{background:var(--primary);color:#fff;box-shadow:0 2px 8px var(--primary-glow)}.btn-review{background:#a78bfa1a;border:1px solid rgba(167,139,250,.25);border-radius:var(--border-radius-sm);font-size:.75rem;font-family:Inter,sans-serif;color:var(--accent);cursor:pointer;padding:2px 6px;margin-right:.2rem;transition:var(--transition-fast);flex-shrink:0;font-weight:600}.btn-review:hover{background:var(--accent);color:#fff}.btn-copy-prev{padding:.45rem 1rem;background:#ffffff80;border:1px solid var(--glass-border);border-radius:var(--border-radius-full);color:var(--text-secondary);font-weight:600;font-size:.85rem;font-family:Inter,sans-serif;cursor:pointer;transition:var(--transition-fast)}.btn-copy-prev:hover{background:rgba(var(--primary-rgb),.1);border-color:rgba(var(--primary-rgb),.3);color:var(--primary)}.btn-toggle-view{padding:.45rem 1rem;background:#ffffff8c;border:1px solid var(--glass-border);border-radius:var(--border-radius-full);color:var(--primary);font-weight:600;font-size:.85rem;font-family:Inter,sans-serif;cursor:pointer;transition:var(--transition-fast);box-shadow:var(--shadow-sm)}.btn-toggle-view:hover{background:rgba(var(--primary-rgb),.12);box-shadow:var(--shadow-md);transform:scale(1.04)}.note-row{padding:.8rem 1rem .8rem 32px;background:#ffffff40;border-bottom:1px solid var(--grid-border);display:flex}.note-textarea{width:100%;min-height:80px;padding:.8rem;border:1.5px solid rgba(var(--primary-rgb),.2);border-radius:var(--border-radius-sm);resize:vertical;font-family:Inter,sans-serif;font-size:.88rem;color:var(--text-primary);background:#fff9;transition:var(--transition-fast)}.note-textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #a78bfa33;background:#ffffffd9}.note-textarea::placeholder{color:var(--text-muted)}.stats-container{display:flex;flex-direction:column;gap:1.5rem;animation:fadeInUp .4s ease both;padding-bottom:2rem}.stats-hero-section{display:flex;justify-content:space-between;align-items:flex-end;padding:2rem;background:var(--glass-bg-strong);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border-radius:var(--border-radius-lg);border:1px solid var(--glass-border);box-shadow:var(--shadow-lg);position:relative;overflow:hidden}.stats-hero-section:before{content:"";position:absolute;top:-50%;right:-10%;width:300px;height:300px;background:radial-gradient(circle,var(--primary-glow) 0%,transparent 70%);pointer-events:none}.stats-title-area h2{font-size:1.8rem;font-weight:800;color:var(--text-primary);margin:.5rem 0 .3rem;letter-spacing:-.03em}.stats-title-area p{color:var(--text-secondary);font-size:.95rem;font-weight:500}.stats-badge{display:inline-flex;align-items:center;gap:.5rem;background:var(--primary-glow);color:var(--primary-dark);padding:.3rem .8rem;border-radius:var(--border-radius-full);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;border:1px solid rgba(var(--primary-rgb),.2)}.stats-toggle-group{display:flex;gap:4px;background:#fff6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:5px;border-radius:var(--border-radius-lg);border:1px solid var(--glass-border-subtle);box-shadow:inset 0 2px 4px #00000005}.btn-stats-toggle{display:flex;align-items:center;justify-content:center;padding:.6rem 1.5rem;border:none;background:transparent;color:var(--text-secondary);font-size:.88rem;font-weight:700;cursor:pointer;border-radius:calc(var(--border-radius-lg) - 4px);transition:all .35s cubic-bezier(.4,0,.2,1);font-family:Inter,sans-serif;letter-spacing:-.01em}.btn-stats-toggle:hover{color:var(--primary-dark);background:#fff6}.btn-stats-toggle.active{background:#fff;color:var(--primary-dark);box-shadow:0 4px 15px rgba(var(--primary-rgb),.15),0 2px 5px #0000000d;transform:translateY(-1px)}.stats-metrics-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem}.metric-card{display:flex;align-items:center;gap:1.25rem;padding:1.5rem;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-md);transition:var(--transition)}.metric-card:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg)}.metric-icon-wrap{width:48px;height:48px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.metric-icon-wrap.primary{background:rgba(var(--primary-rgb),.15);color:var(--primary)}.metric-icon-wrap.accent{background:#a78bfa26;color:var(--accent)}.metric-icon-wrap.success{background:#34d39926;color:var(--success)}.metric-icon-wrap.highlight{background:#fbbf2426;color:#f59e0b}.metric-label{display:block;font-size:.85rem;color:var(--text-muted);font-weight:600;margin-bottom:.2rem}.metric-val{font-size:1.35rem;font-weight:800;color:var(--text-primary);letter-spacing:-.01em}.metric-val.highlight{color:var(--primary-dark)}.val-sub{font-size:.9rem;color:var(--text-muted);font-weight:500}.achievement-mini-bar{width:100%;height:5px;background:#0000000d;border-radius:10px;margin-top:.6rem;overflow:hidden}.achievement-mini-bar .bar-fill{height:100%;background:var(--success);border-radius:10px;transition:width 1s ease-out}.stats-visual-layout{display:grid;grid-template-columns:1fr 1.5fr;gap:1.5rem}.stats-panel{padding:1.75rem;display:flex;flex-direction:column;gap:1.5rem}.panel-header{display:flex;justify-content:space-between;align-items:center}.header-title{display:flex;align-items:center;gap:.75rem;color:var(--text-primary)}.header-title h3{font-size:1.15rem;font-weight:700}.subject-list-rich{display:flex;flex-direction:column;gap:1.25rem}.subject-rich-row{display:flex;flex-direction:column;gap:.5rem;animation:fadeInUp .5s ease both}.row-info{display:flex;justify-content:space-between;align-items:baseline}.sub-name-bold{font-weight:700;color:var(--text-primary);font-size:.95rem}.sub-share{font-size:.8rem;font-weight:700;color:var(--text-muted)}.composite-bar{position:relative;height:24px;display:flex;align-items:center;background:#00000008;border-radius:8px;padding:0 8px;overflow:hidden}.bar-visual{position:absolute;left:0;top:0;height:100%;border-radius:0 8px 8px 0;transition:width 1s cubic-bezier(.17,.67,.83,.67)}.bar-time-val{position:relative;z-index:1;font-size:.8rem;font-weight:800;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.2)}.activity-chart-rich{display:flex;align-items:flex-end;justify-content:space-between;height:200px;padding-bottom:1.5rem;gap:4px}.activity-column{flex:1;display:flex;flex-direction:column;align-items:center;gap:.75rem;height:100%}.column-track{width:100%;background:#00000008;border-radius:8px;flex:1;position:relative;display:flex;align-items:flex-end;overflow:hidden}.column-fill{width:100%;background:var(--text-muted);opacity:.3;border-radius:6px;transition:all .6s cubic-bezier(.17,.67,.83,.67);position:relative;display:flex;justify-content:center}.column-fill.has-study{background:var(--primary-light);opacity:.8}.column-fill.goal-met{background:var(--success);opacity:1;box-shadow:0 0 12px #34d3994d}.col-tooltip{position:absolute;top:-24px;font-size:.65rem;font-weight:800;color:var(--text-secondary);opacity:0;transition:.2s}.activity-column:hover .col-tooltip{opacity:1;transform:translateY(-2px)}.activity-column:hover .column-fill{transform:scaleX(1.1);filter:brightness(1.1)}.column-label{font-size:.72rem;font-weight:600;color:var(--text-muted)}.loading-container{padding:4rem;text-align:center}.no-data-msg{padding:3rem;text-align:center;color:var(--text-muted);font-weight:600}.empty-panel-msg{color:var(--text-muted);font-size:.9rem}.heatmap-panel{grid-column:1 / -1;padding:1.5rem!important;margin-bottom:.5rem}.heatmap-legend{display:flex;align-items:center;gap:.6rem;font-size:.75rem;color:var(--text-muted);font-weight:600}.legend-cells{display:flex;gap:3px}.legend-cell{width:10px;height:10px;border-radius:2px}.heatmap-container-scroll{width:100%;overflow-x:auto;padding:1.5rem .5rem .5rem;cursor:grab}.heatmap-container-scroll::-webkit-scrollbar{height:6px}.heatmap-container-scroll::-webkit-scrollbar-thumb{background:#0000001a;border-radius:10px}.heatmap-grid-layout{display:flex;gap:12px;min-width:max-content}.weekday-labels{display:flex;flex-direction:column;justify-content:space-between;padding-top:20px;height:102px;font-size:.65rem;color:var(--text-muted);font-weight:700;text-align:right;width:15px}.heatmap-columns{display:flex;gap:3px}.heatmap-column{display:flex;flex-direction:column;gap:3px;position:relative;padding-top:20px}.month-label-abs{position:absolute;top:0;left:0;font-size:.72rem;font-weight:700;color:var(--text-secondary);white-space:nowrap}.heatmap-cell{width:12px;height:12px;border-radius:2px;transition:transform .1s ease;cursor:pointer}.heatmap-cell:hover{transform:scale(1.3);z-index:10;box-shadow:0 0 8px #00000026}.heatmap-cell.empty{background:transparent;cursor:default}.heatmap-cell.empty:hover{transform:none}.heatmap-cell.level-0,.legend-cell.level-0{background:#0000000a}.heatmap-cell.level-1,.legend-cell.level-1{background:#dcfce7}.heatmap-cell.level-2,.legend-cell.level-2{background:#86efac}.heatmap-cell.level-3,.legend-cell.level-3{background:#22c55e}.heatmap-cell.level-4,.legend-cell.level-4{background:#15803d}[data-theme=dark] .heatmap-cell.level-0,[data-theme=dark] .legend-cell.level-0{background:#ffffff14}[data-theme=dark] .heatmap-cell.level-1,[data-theme=dark] .legend-cell.level-1{background:#064e3b}[data-theme=dark] .heatmap-cell.level-2,[data-theme=dark] .legend-cell.level-2{background:#059669}[data-theme=dark] .heatmap-cell.level-3,[data-theme=dark] .legend-cell.level-3{background:#10b981}[data-theme=dark] .heatmap-cell.level-4,[data-theme=dark] .legend-cell.level-4{background:#34d399}.stat-value{font-size:1.75rem;font-weight:800;color:var(--text-primary);letter-spacing:-.03em}.stat-value.highlight{background:linear-gradient(135deg,var(--primary),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.stat-sub{font-size:.88rem;color:var(--text-muted);font-weight:500}.stats-details-row{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}.stats-section{background:var(--glass-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);padding:1.5rem;border-radius:var(--border-radius);border:1px solid var(--glass-border);box-shadow:var(--shadow-md);min-height:300px;animation:fadeInUp .45s ease both}.stats-section h3{font-size:1rem;font-weight:800;color:var(--text-primary);margin-bottom:1.2rem;padding-bottom:.6rem;border-bottom:2px solid rgba(var(--primary-rgb),.15);letter-spacing:-.01em}.no-data-text{text-align:center;color:var(--text-muted);font-style:italic;margin-top:3rem}.subject-bars{display:flex;flex-direction:column;gap:1rem}.subject-bar-row{display:flex;align-items:center;gap:1rem;animation:fadeInUp .3s ease both}.sub-label{width:100px;display:flex;align-items:center;gap:.5rem;font-size:.88rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sub-name{flex:1;overflow:hidden;text-overflow:ellipsis;font-weight:600}.bar-track{flex:1;height:10px;background:#c8d7f066;border-radius:var(--border-radius-full);overflow:hidden}.bar-fill{height:100%;border-radius:var(--border-radius-full);transition:width .7s cubic-bezier(.4,0,.2,1);animation:growBar .7s cubic-bezier(.4,0,.2,1) both}@keyframes growBar{0%{width:0!important}}.sub-time{width:70px;text-align:right;font-size:.82rem;font-weight:700;color:var(--primary)}.daily-chart{display:flex;justify-content:space-between;align-items:flex-end;height:250px;padding-top:2rem}.daily-bar-wrapper{display:flex;flex-direction:column;align-items:center;gap:.5rem;flex:1}.daily-bar-track{width:100%;max-width:16px;height:180px;background:#c8d7f066;border-radius:var(--border-radius-sm);display:flex;align-items:flex-end;overflow:hidden}.daily-bar-fill{width:100%;background:linear-gradient(180deg,var(--primary-light),var(--primary));border-radius:var(--border-radius-sm);transition:height .6s cubic-bezier(.4,0,.2,1);animation:growUp .6s cubic-bezier(.4,0,.2,1) both}@keyframes growUp{0%{height:0!important}}.daily-bar-fill.goal-met{background:linear-gradient(180deg,#6ee7b7,var(--success));box-shadow:0 0 8px var(--success-glow)}.daily-label{color:var(--text-muted);text-align:center;font-size:.78rem;font-weight:600}.review-notes-container{display:flex;flex-direction:column;gap:1.25rem;animation:fadeInUp .4s ease both}.review-header{background:var(--glass-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);padding:1.25rem 1.5rem;border-radius:var(--border-radius);border:1px solid var(--glass-border);box-shadow:var(--shadow-md)}.review-header h2{font-size:1.2rem;font-weight:800;color:var(--text-primary);margin-bottom:.4rem}.review-desc{font-size:.88rem;color:var(--text-muted);margin-bottom:1.2rem}.filter-chips{display:flex;flex-wrap:wrap;gap:.5rem}.chip{background:#ffffff8c;border:1px solid var(--glass-border);padding:.35rem 1rem;border-radius:var(--border-radius-full);font-size:.82rem;font-family:Inter,sans-serif;color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast);font-weight:600}.chip:hover{background:rgba(var(--primary-rgb),.1);border-color:rgba(var(--primary-rgb),.3)}.chip.active{background:linear-gradient(135deg,var(--primary),var(--primary-light));color:#fff;border-color:transparent;box-shadow:0 2px 8px var(--primary-glow)}.no-notes-placeholder{padding:4rem 2rem;text-align:center;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:var(--border-radius);border:1px dashed rgba(var(--primary-rgb),.3);color:var(--text-muted);line-height:1.7}.notes-masonry-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.25rem;align-items:start}.note-card{background:var(--glass-bg-strong);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border);border-radius:var(--border-radius);padding:1.25rem;box-shadow:var(--shadow-md);display:flex;flex-direction:column;gap:.7rem;transition:var(--transition);animation:fadeInUp .35s ease both}.note-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}.note-card-header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--glass-border-subtle);padding-bottom:.7rem}.note-date{font-size:.8rem;color:var(--text-muted);font-weight:600}.note-subject-pill{display:flex;align-items:center;gap:.35rem;padding:.2rem .65rem;border-radius:var(--border-radius-full);font-size:.78rem;font-weight:700;background:#ffffff80}.color-dot-mini{width:8px;height:8px;border-radius:50%}.note-content-preview{font-size:.82rem;color:var(--text-secondary);font-weight:600;background:rgba(var(--primary-rgb),.07);padding:.5rem .7rem;border-radius:var(--border-radius-sm);border-left:3px solid var(--primary-light)}.note-text-body{font-size:.92rem;color:var(--text-primary);line-height:1.65;white-space:pre-wrap;word-break:break-word;overflow-wrap:break-word}.calendar-dashboard-container{display:flex;flex-direction:column;gap:1rem;animation:fadeInUp .4s ease both}.calendar-header{display:flex;justify-content:space-between;align-items:center;background:var(--glass-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);padding:1rem 1.5rem;border-radius:var(--border-radius);border:1px solid var(--glass-border);box-shadow:var(--shadow-md)}.calendar-header h2{font-size:1.15rem;font-weight:800;color:var(--text-primary);letter-spacing:-.02em}.btn-cal-nav{background:#ffffff80;border:1px solid var(--glass-border);padding:.4rem 1rem;border-radius:var(--border-radius-full);font-size:.85rem;font-family:Inter,sans-serif;color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast);font-weight:600}.btn-cal-nav:hover{background:rgba(var(--primary-rgb),.12);border-color:rgba(var(--primary-rgb),.3);color:var(--primary)}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}.weekday-label{padding:.4rem 0;font-size:.82rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.weekday-label.sun{color:#f87171cc}.weekday-label.sat{color:rgba(var(--primary-rgb),.8)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.cal-cell{min-height:85px;background:var(--glass-bg);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--glass-border);border-radius:var(--border-radius-sm);padding:.45rem;position:relative;display:flex;flex-direction:column;justify-content:space-between;transition:var(--transition);z-index:1}.cal-cell.empty{background:transparent;border:none;-webkit-backdrop-filter:none;backdrop-filter:none}.cal-cell.day-cell{cursor:pointer}.cal-cell.day-cell:hover{background:#ffffffb8;border-color:var(--primary-light);box-shadow:0 4px 16px var(--primary-glow),var(--shadow-md);transform:translateY(-1px) scale(1.02);z-index:50}.cal-cell.density-1{background:#dbeafe8c}.cal-cell.density-2{background:#bfdbfea6}.cal-cell.density-3{background:#93c5fd99}.cal-cell.density-4{background:#60a5fa80}.cal-cell.today-cell{border-color:var(--primary);border-width:2px;box-shadow:0 0 0 2px var(--primary-glow)}.cal-cell.selected{border-color:var(--primary);border-width:2px;box-shadow:0 0 0 4px var(--primary-glow),var(--shadow-md)}.cal-cell.goal-met-cell{background:#34d39933!important;border-color:var(--success)}.cell-top-row{display:flex;justify-content:space-between;align-items:center}.cal-date-num{font-size:.85rem;font-weight:700;color:var(--text-primary);line-height:1}.cal-date-num.today-badge{background:linear-gradient(135deg,var(--primary),var(--primary-light));color:#fff;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:.75rem;box-shadow:0 2px 8px var(--primary-glow)}.cal-note-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 4px #a78bfa80}.cal-simple-minutes{font-size:.78rem;color:var(--primary-dark);font-weight:700;text-align:center;padding:.1rem 0}.cal-simple-minutes.empty-str{color:var(--text-muted);font-weight:400}.cell-bottom-area{display:flex;flex-direction:column;gap:3px}.subject-dots{display:flex;gap:3px;justify-content:center}.s-dot{width:6px;height:6px;border-radius:50%;opacity:.85}.mini-progress-track{width:100%;height:3px;background:#c8d7f080;border-radius:var(--border-radius-full);overflow:hidden}.mini-progress-fill{height:100%;background:var(--primary-light);border-radius:var(--border-radius-full);transition:width .5s ease-out}.mini-progress-fill.met{background:var(--success);box-shadow:0 0 4px var(--success-glow)}.cal-hover-popover{display:none;position:absolute;top:100%;left:0;z-index:300;min-width:220px;max-width:280px;background:var(--glass-bg-strong);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--border-radius);padding:1rem;box-shadow:var(--shadow-lg);margin-top:6px;animation:popIn .15s ease}.cal-hover-popover.left-aligned{left:auto;right:0}.cal-cell.day-cell:hover .cal-hover-popover{display:block}.pop-date{font-size:.78rem;color:var(--text-muted);margin-bottom:.6rem;border-bottom:1px solid var(--glass-border-subtle);padding-bottom:.4rem;font-weight:600}.pop-summary-row{display:flex;justify-content:space-between;font-size:.85rem;margin-bottom:.3rem}.pop-label{color:var(--text-muted);font-weight:500}.pop-value{font-weight:700;color:var(--text-primary)}.font-bold{font-weight:700}.text-primary{color:var(--primary)!important}.badge-success{color:var(--success);font-weight:700;font-size:.8rem}.badge-danger{color:var(--danger);font-weight:700;font-size:.8rem}.pop-subjects-list{margin-top:.6rem;border-top:1px solid var(--glass-border-subtle);padding-top:.5rem}.pop-sub-title{font-size:.78rem;font-weight:700;color:var(--text-muted);margin-bottom:.4rem}.pop-sub-item{display:flex;align-items:center;gap:.4rem;font-size:.8rem;margin-bottom:.2rem}.pop-sub-color{width:8px;height:8px;border-radius:50%;flex-shrink:0}.pop-sub-name{flex:1;color:var(--text-primary);font-weight:500}.pop-sub-time{font-weight:700;color:var(--primary)}.pop-sub-more{font-size:.75rem;color:var(--text-muted);font-style:italic;margin-top:.2rem}.pop-note-count{margin-top:.6rem;font-size:.8rem;color:var(--text-muted);border-top:1px solid var(--glass-border-subtle);padding-top:.4rem}.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,var(--bg-grad-start),var(--bg-grad-mid),var(--bg-grad-end));background-attachment:fixed}.login-card{background:var(--glass-bg-strong);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);padding:2.5rem;border-radius:var(--border-radius-lg);border:1px solid var(--glass-border);box-shadow:var(--shadow-lg),0 0 40px rgba(var(--primary-rgb),.1);width:100%;max-width:420px;animation:fadeInUp .5s ease both}.login-header{text-align:center;margin-bottom:2rem}.login-header h2{font-size:1.7rem;font-weight:800;background:linear-gradient(135deg,var(--primary-dark),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.5rem;letter-spacing:-.02em}.login-header p{color:var(--text-muted);font-size:.9rem}.login-error{background:#f871711f;color:#c0392b;padding:.75rem 1rem;border-radius:var(--border-radius-sm);margin-bottom:1.5rem;font-size:.85rem;text-align:center;border:1px solid rgba(248,113,113,.25)}.login-form .form-group{margin-bottom:1.2rem}.login-form label{display:block;margin-bottom:.5rem;font-weight:600;color:var(--text-secondary);font-size:.88rem}.login-form input{width:100%;padding:.75rem 1rem;border:1.5px solid rgba(var(--primary-rgb),.2);border-radius:var(--border-radius-sm);font-size:.95rem;font-family:Inter,sans-serif;background:#fff9;color:var(--text-primary);transition:var(--transition-fast)}.login-form input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow);background:#ffffffe6}.login-btn{width:100%;padding:.8rem;margin-top:.8rem;font-size:1rem;font-family:Inter,sans-serif;font-weight:700;background:linear-gradient(135deg,var(--primary),var(--primary-light));color:#fff;border:none;border-radius:var(--border-radius-sm);cursor:pointer;box-shadow:0 4px 15px var(--primary-glow);transition:var(--transition)}.login-btn:hover{transform:translateY(-2px);box-shadow:0 6px 22px var(--primary-glow)}.login-divider{text-align:center;margin:1.5rem 0;position:relative}.login-divider:before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:var(--glass-border-subtle);z-index:1}.login-divider span{background:transparent;padding:0 1rem;color:var(--text-muted);font-size:.85rem;position:relative;z-index:2}.google-btn{width:100%;padding:.75rem;background:#ffffffa6;border:1px solid var(--glass-border);color:var(--text-primary);display:flex;align-items:center;justify-content:center;gap:.5rem;font-weight:600;font-size:.92rem;font-family:Inter,sans-serif;border-radius:var(--border-radius-sm);cursor:pointer;transition:var(--transition-fast)}.google-btn:hover{background:#ffffffe6;box-shadow:var(--shadow-md)}.login-footer{text-align:center;margin-top:1.5rem;font-size:.88rem;color:var(--text-muted)}.login-footer span{color:var(--primary);font-weight:700;cursor:pointer}.login-footer span:hover{text-decoration:underline}.app-container[style*="justify-content: center"]{justify-content:center;align-items:center;height:100vh;font-size:1.1rem;color:var(--text-secondary);font-weight:600}
