:root{--color-primary-darkest: #301934;--color-primary-dark: #442D48;--color-primary: #58415C;--color-primary-light: #604760;--color-primary-lighter: #5a3d63;--color-accent: #8A2BE2;--color-accent-soft: #B19CD9;--color-accent-glow: #9f7aea;--color-accent-pale: #d8cfff;--color-accent-focus: #a78bfa;--color-white: #ffffff;--color-black: #000000;--color-gray-900: #242424;--color-gray-850: #282c34;--color-gray-800: #333333;--color-gray-500: #888888;--color-gray-400: #999999;--color-gray-300: #aaaaaa;--color-gray-200: #cccccc;--color-gray-150: #dddddd;--color-gray-100: #e5e5e5;--color-gray-75: #e6e6e6;--color-gray-50: #f0f0f0;--color-gray-25: #f5f5f5;--color-gray-20: #f6f8fa;--color-gray-15: #f9f9f9;--color-gray-10: #fafafa;--color-success: #52A85F;--color-success-light: #86efac;--color-error: #dc2626;--color-error-dark: #B22222;--color-error-muted: #b35c5c;--color-error-light: #fca5a5;--color-error-pale: #ffcccc;--color-warning: #FFD700;--color-warning-bright: #D6FE51;--color-alert: #8bc34a;--color-link: #646cff;--color-link-hover: #535bf2;--color-link-hover-light: #747bff;--color-link-alt: #0066cc;--color-link-cyan: #61dafb;--color-overlay-white-90: rgba(255, 255, 255, .9);--color-overlay-white-87: rgba(255, 255, 255, .87);--color-overlay-white-70: rgba(255, 255, 255, .7);--color-overlay-white-60: rgba(255, 255, 255, .6);--color-overlay-white-20: rgba(255, 255, 255, .2);--color-overlay-white-15: rgba(255, 255, 255, .15);--color-overlay-white-12: rgba(255, 255, 255, .12);--color-overlay-white-06: rgba(255, 255, 255, .06);--color-overlay-black-33: rgba(0, 0, 0, .33);--color-overlay-black-20: rgba(0, 0, 0, .2);--color-overlay-black-10: rgba(0, 0, 0, .1);--color-overlay-black-08: rgba(0, 0, 0, .08);--color-overlay-accent-60: rgba(159, 122, 234, .6);--color-overlay-accent-35: rgba(159, 122, 234, .35);--color-overlay-accent-20: rgba(167, 139, 250, .2);--color-overlay-accent-soft-50: rgba(177, 156, 217, .5);--color-overlay-error-20: rgba(220, 38, 38, .2);--color-overlay-error-15: rgba(220, 38, 38, .15);--color-overlay-error-10: rgba(220, 38, 38, .1);--color-overlay-error-dark-20: rgba(178, 34, 34, .2);--text-primary: var(--color-overlay-white-87);--text-secondary: var(--color-overlay-white-70);--text-muted: var(--color-overlay-white-60);--text-accent: var(--color-accent-soft);--text-success: var(--color-success-light);--text-error: var(--color-error-light);--text-hint: var(--color-gray-400);--bg-page: var(--color-gray-900);--bg-header: var(--color-primary-darkest);--bg-footer: var(--color-primary-darkest);--bg-card: var(--color-primary);--bg-card-alt: var(--color-primary-light);--bg-input: var(--color-primary-darkest);--bg-button: var(--color-primary-darkest);--border-primary: var(--color-primary-dark);--border-accent: var(--color-accent);--border-subtle: var(--color-overlay-white-15);--border-error: var(--color-error-dark);--border-hint: var(--color-gray-400);--focus-ring: var(--color-accent);--focus-shadow: var(--color-overlay-accent-20);--hover-bg: var(--color-primary-light);--bg-flash-card-front: #F8F6F0;--bg-flash-card-back: #F0EDE6;--text-flash-card: #1A1A1A;--text-flash-card-muted: #555555;--border-flash-card: #D5D0C8;--shadow-flash-card: rgba(0, 0, 0, .12);--ribbon-col: 240px;--right-col: clamp(280px, 28vw, 420px)}[data-theme=light]{--color-primary-darkest: #f8f4f9;--color-primary-dark: #f3eef5;--color-primary: #ebe3ed;--color-primary-light: #e0d6e3;--color-primary-lighter: #d4c8d8;--color-accent: #7c3aed;--color-accent-soft: #6b21a8;--color-accent-glow: #7c3aed;--color-accent-pale: #581c87;--color-accent-focus: #8b5cf6;--text-primary: rgba(0, 0, 0, .87);--text-secondary: rgba(0, 0, 0, .7);--text-muted: rgba(0, 0, 0, .5);--text-accent: var(--color-accent-soft);--text-success: #15803d;--text-error: #dc2626;--bg-page: #ffffff;--bg-header: var(--color-primary-darkest);--bg-footer: var(--color-primary-darkest);--bg-card: var(--color-primary);--bg-card-alt: var(--color-primary-light);--bg-input: #ffffff;--bg-button: var(--color-primary-dark);--border-primary: #d1c4d6;--border-accent: var(--color-accent);--border-subtle: rgba(0, 0, 0, .12);--border-error: var(--color-error-dark);--focus-ring: var(--color-accent);--focus-shadow: rgba(124, 58, 237, .25);--hover-bg: var(--color-primary-lighter);--color-overlay-white-90: rgba(0, 0, 0, .9);--color-overlay-white-87: rgba(0, 0, 0, .87);--color-overlay-white-70: rgba(0, 0, 0, .7);--color-overlay-white-60: rgba(0, 0, 0, .6);--color-overlay-white-20: rgba(0, 0, 0, .2);--color-overlay-white-15: rgba(0, 0, 0, .15);--color-overlay-white-12: rgba(0, 0, 0, .12);--color-overlay-white-06: rgba(0, 0, 0, .06);--color-white: #000000;--color-black: #ffffff;--color-gray-900: #f9fafb;--color-gray-850: #f3f4f6;--color-gray-800: #1f2937;--color-gray-500: #6b7280;--color-gray-400: #9ca3af;--color-gray-300: #d1d5db;--color-gray-200: #e5e7eb;--color-gray-150: #9ca3af;--color-gray-100: #d1d5db;--color-gray-75: #e5e7eb;--color-gray-50: #f3f4f6;--color-gray-25: #f9fafb;--color-gray-20: #ffffff;--color-gray-15: #f3f4f6;--color-gray-10: #ffffff;--color-success: #16a34a;--color-success-light: #15803d;--color-warning: #ca8a04;--color-warning-bright: #84cc16;--color-link: #4f46e5;--color-link-hover: #4338ca;--color-link-hover-light: #6366f1;--color-link-alt: #1d4ed8}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:var(--text-primary);background-color:var(--bg-page);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body,#root{height:100%;margin:0}*{box-sizing:border-box}body{min-width:320px}a{font-weight:500;color:var(--color-link);text-decoration:inherit}a:hover{color:var(--color-link-hover)}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--bg-button);cursor:pointer;transition:border-color .25s}button:hover{border-color:var(--color-link)}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.App{text-align:center}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion: no-preference){.App-logo{animation:App-logo-spin infinite 20s linear}}.App-header{background-color:#282c34;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:calc(10px + 2vmin);color:#fff}.App-link{color:#61dafb}@keyframes App-logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}body{margin:0;padding:0;color:#fff;background-color:#442d48;font-family:Arial,sans-serif;min-height:100vh}.home-container{padding:2rem;text-align:center}.welcome-heading{font-size:1.75rem;font-weight:700;padding-left:1rem;margin-top:1.5rem;color:#fff}.summary-section h2{font-size:1.4rem;margin-bottom:.5rem;color:#b19cd9;text-align:center}.summary-section h2{font-size:1.5rem;margin-bottom:.5rem}.summary-value{font-size:1.2 rem;font-weight:700;color:#fff}.chart-container{margin-top:2rem;text-align:center}.chart-title{font-size:1.5rem;margin-bottom:1rem;color:#fff}.chart-wrapper{max-width:960px;width:100%;margin:2rem auto 0;padding:1rem;background-color:#58415c;border-radius:8px}.chart-wrapper>div{margin-left:0}.chart-box{width:80%;max-width:600px;margin:0 auto;min-height:380px}.highlight{font-size:2rem;font-weight:700;margin-top:.5rem;color:#fff;text-align:center}.dashboard-content section{margin-top:3rem}.dashboard-content h2{color:#b19cd9;margin-bottom:1rem;text-align:center}.summary-line{display:flex;justify-content:flex-start;align-items:baseline;font-size:1.25rem;margin:1.5rem 0;padding-left:1rem}.summary-label{font-weight:700;color:#b19cd9;margin-right:.5rem}.summary-value{color:#b19cd9}.study-form{margin:2rem 0;text-align:left;padding-left:1rem;max-width:500px}.study-form label{display:block;font-size:1.1rem;color:#b19cd9;margin-bottom:.5rem;font-weight:700}.study-form select{width:100%;padding:.45rem .6rem;font-size:.95rem;border:2px solid #ffffff;background-color:#301934;color:#fff;border-radius:6px;outline:none;cursor:pointer;box-shadow:0 2px 4px #0003}.study-form select:focus{border-color:#b19cd9;box-shadow:0 0 6px #b19cd980}.no-data-message{color:#aaa;font-style:italic;text-align:center;padding:20px;font-size:1.1rem}.total-hours-summary{margin:.5rem 0 1.25rem;font-size:1.25rem;font-weight:700;background-color:#301934;text-align:center;background:#282c34}h1{font-family:Poppins,sans-serif;font-weight:600;color:var(--color-white);margin:0}.page-title{text-align:center;letter-spacing:.04em;margin-top:1.5rem;margin-bottom:.5rem}.page-subtitle{text-align:center;font-weight:500;font-size:1.8rem;letter-spacing:.04em;opacity:.85;margin-bottom:2rem}label{font-weight:700;display:block;margin-top:.1rem;color:var(--color-white);text-align:left}input,select,textarea{width:100%;padding:.1rem;border-radius:4px;border:1px solid var(--color-gray-200);font-size:1rem;margin-bottom:1rem;text-align:left!important}input[type=date],input[type=date]:focus{text-align:left!important}input[type=date]::-webkit-datetime-edit,input[type=date]::-webkit-datetime-edit-fields-wrapper,input[type=date]::-webkit-datetime-edit-text,input[type=date]::-webkit-datetime-edit-month-field,input[type=date]::-webkit-datetime-edit-day-field,input[type=date]::-webkit-datetime-edit-year-field{text-align:left!important}input:focus,select:focus,textarea:focus{text-align:left!important}.input{text-align:left!important}.input:focus{text-align:left!important}form{margin-bottom:2rem}.container{max-width:960px;margin:0 auto;padding:2rem}.btn-submit{background-color:var(--color-primary-lighter);color:var(--color-white);border:2px solid var(--color-accent);padding:.75rem 1.5rem;font-size:1rem;border-radius:4px;cursor:pointer;transition:background-color .3s ease,border-color .3s ease}.btn-submit:hover:not(:disabled){background-color:var(--color-accent);border-color:var(--color-white)}.btn-submit:disabled{opacity:.5;cursor:not-allowed}.chart-section{margin:1.5rem 0}.chart-title{font-size:1.5rem;margin-bottom:1rem;color:var(--color-white);text-align:center}.chart-wrapper{max-width:960px;width:100%;margin:1rem auto;padding:1rem;background-color:var(--bg-card);border-radius:8px}.chart-box{width:100%;min-height:320px}.chart-loading,.chart-empty,.chart-error{text-align:center;padding:2rem;color:var(--text-secondary);font-style:italic}.page-tabs{display:flex;gap:.5rem;justify-content:center;margin-bottom:1.5rem;border-bottom:2px solid var(--color-overlay-white-20);padding-bottom:0}.page-tab{background:transparent;border:none;color:var(--text-secondary);font-family:Poppins,sans-serif;font-size:1rem;font-weight:500;padding:.75rem 1.5rem;cursor:pointer;position:relative;transition:color .2s ease}.page-tab:hover,.page-tab.active{color:var(--color-white)}.page-tab.active:after{content:"";position:absolute;bottom:-2px;left:0;right:0;height:3px;background:var(--color-accent);border-radius:3px 3px 0 0}.page-tab:focus{outline:none}.page-tab:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:4px}.page-tab-content{min-height:400px}.page-tab-panel{padding:1rem 0}.page-tab-placeholder{color:var(--text-muted);text-align:center;font-style:italic;padding:3rem}html,body,#root{height:100%}.app-shell{min-height:100dvh;display:flex;flex-direction:column;background:var(--color-primary-dark)}.page-content{flex:1}.app-header,.app-footer{background:transparent}.auth-shell{min-height:100dvh;display:grid;place-items:center;padding:2rem}.login-container{width:100%;max-width:500px;margin:0;padding:2rem;background-color:var(--bg-card);border-radius:8px;box-shadow:0 4px 6px var(--color-overlay-black-10)}.login-container h2{text-align:center;margin-bottom:1.5rem;color:var(--color-white);font-size:1.8rem}.login-container .form-group{display:flex;flex-direction:column;margin-bottom:1rem;align-items:flex-start;width:100%}.login-container label{font-weight:700;margin-bottom:.5rem;color:var(--color-white)}.login-container input[type=text],.login-container input[type=email],.login-container input[type=password]{width:100%;padding:.75rem;border:none;border-radius:4px;background-color:var(--bg-input);color:var(--color-white);font-size:1rem;transition:background-color .2s ease,box-shadow .2s ease}.login-container input::placeholder{color:var(--text-secondary)}.login-container input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--bg-input) inset!important;-webkit-text-fill-color:var(--color-white)!important}.login-container input[type=text]:focus,.login-container input[type=email]:focus,.login-container input[type=password]:focus{outline:none;background-color:var(--color-primary-dark);box-shadow:0 0 0 2px var(--focus-ring)}.login-container button[type=submit]{display:block;width:100%;max-width:300px;padding:.75rem;margin:2rem auto 0;background-color:var(--bg-button);color:var(--color-white);border:2px solid var(--border-accent);border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,transform .05s ease}.login-container button[type=submit]:hover{background-color:var(--color-primary-lighter);border-color:var(--color-accent)}.login-container button[type=submit]:active{transform:translateY(1px)}.login-container button[type=submit]:disabled{opacity:.6;cursor:not-allowed}.login-container .error{color:var(--color-error-pale);background-color:var(--color-error-muted);padding:.5rem;border-radius:4px;text-align:center;font-weight:700;margin-top:1rem}@media (prefers-reduced-motion: reduce){.login-container *,.auth-shell *{transition:none!important}}@media (max-width: 480px){.auth-shell{padding:1rem}.login-container{padding:1.25rem}.login-container h2{font-size:1.5rem}}.header-wrapper{width:100%;background-color:var(--bg-header);display:flex;justify-content:center;position:relative;z-index:2000}.header-container{width:100%;max-width:960px;display:flex;align-items:center;justify-content:center;padding:.2rem 1rem;color:var(--color-white)}.header-logo{height:50px;width:auto;margin-right:1rem}.header-title{font-size:1.44rem;font-weight:500;letter-spacing:.03em;white-space:nowrap}.header-actions{position:absolute;right:1rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:.5rem}.user-icon{display:flex;align-items:center;justify-content:center;border-radius:50%;background-color:var(--color-primary);color:var(--color-white);font-weight:600;-webkit-user-select:none;user-select:none}.user-icon--clickable{cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.user-icon--clickable:hover{transform:scale(1.05);box-shadow:0 2px 8px var(--color-overlay-black-20)}.user-icon--clickable:focus{outline:2px solid var(--color-accent);outline-offset:2px}.user-icon--sm{width:32px;height:32px;font-size:.75rem}.user-icon--md{width:40px;height:40px;font-size:.9rem}.user-icon--lg{width:56px;height:56px;font-size:1.1rem}.user-icon__initials{line-height:1}.user-icon__default-svg{width:60%;height:60%}.user-menu{position:relative}.user-menu__dropdown{position:absolute;top:calc(100% + 8px);right:0;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:8px;box-shadow:0 4px 12px var(--color-overlay-black-20);min-width:160px;z-index:1000;overflow:hidden}.user-menu__item{display:block;width:100%;padding:.75rem 1rem;text-align:left;color:var(--color-white);background:none;border:none;cursor:pointer;font-size:.95rem;text-decoration:none;transition:background-color .15s}.user-menu__item:hover{background:var(--color-overlay-white-12)}.user-menu__item:focus{outline:none;background:var(--color-overlay-white-12)}.user-menu__item--logout{border-top:1px solid var(--border-subtle)}.back-button{background:var(--color-primary);border:none;border-radius:50%;width:48px;height:48px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-white);transition:transform .2s,background-color .2s;box-shadow:0 3px 6px var(--color-overlay-black-20)}.back-button:hover{background:var(--color-primary-light);transform:scale(1.1)}.back-button:focus{outline:2px solid var(--color-accent);outline-offset:2px}.back-arrow{font-size:1.5rem;font-weight:700;line-height:1}.notification-modal-overlay{position:fixed;inset:0;background:var(--color-overlay-black-70);display:flex;align-items:center;justify-content:center;z-index:2100;animation:notificationModalFadeIn .3s ease}@keyframes notificationModalFadeIn{0%{opacity:0}to{opacity:1}}.notification-modal{position:relative;background:var(--bg-card);border-radius:16px;padding:2rem;max-width:420px;width:90vw;max-height:80vh;overflow-y:auto;display:flex;flex-direction:column;align-items:center;text-align:center;border:6px solid var(--color-accent);box-shadow:0 8px 32px var(--color-overlay-black-40);animation:notificationModalSlideUp .4s ease}@keyframes notificationModalSlideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.notification-modal__close{position:absolute;top:.75rem;right:.75rem;background:none;border:none;font-size:1.75rem;color:var(--text-secondary);cursor:pointer;line-height:1;padding:.25rem;transition:color .2s;z-index:1}.notification-modal__close:hover{color:var(--text-primary)}.notification-modal__type{font-size:.9rem;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 .5rem}.notification-modal__title{font-size:1.25rem;font-weight:600;color:var(--text-primary);margin:0 0 1rem}.notification-modal__body{color:var(--text-secondary);font-size:1rem;line-height:1.6;margin:0 0 1.5rem;white-space:pre-wrap}.notification-modal__back{margin-top:auto;padding-top:1rem}@media (max-width: 480px){.notification-modal{padding:1.5rem;max-width:95vw}.notification-modal__title{font-size:1.1rem}.notification-modal__body{font-size:.95rem}}.notification-panel{position:absolute;top:calc(100% + .5rem);right:0;width:340px;max-height:400px;background:var(--bg-card, #fff);border-radius:12px;box-shadow:0 4px 20px #00000040;overflow:hidden;z-index:2000;animation:notification-panel-fade-in .2s ease}@keyframes notification-panel-fade-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.notification-panel__header{display:flex;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid var(--border-subtle);gap:.5rem}.notification-panel__actions{display:flex;align-items:center;gap:1rem}.notification-panel__filter{display:flex;align-items:center;gap:.375rem;font-size:.8rem;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none}.notification-panel__filter input[type=checkbox]{width:14px;height:14px;accent-color:var(--color-accent, #7c3aed);cursor:pointer}.notification-panel__filter:hover{color:var(--text-primary)}.notification-panel__title{margin:0;font-size:1rem;font-weight:600;color:var(--text-primary)}.notification-panel__mark-all{background:none;border:none;padding:0;font-size:.85rem;color:var(--text-secondary);cursor:pointer;text-decoration:none}.notification-panel__mark-all:hover{color:var(--text-primary);text-decoration:underline}.notification-panel__list{max-height:340px;overflow-y:auto}.notification-panel__loading,.notification-panel__empty{padding:2rem;text-align:center;color:var(--text-muted)}.notification-panel__empty-icon{width:48px;height:48px;margin-bottom:.5rem;opacity:.4}.notification-panel__empty p{margin:0;font-size:.9rem}.notification-item{display:flex;align-items:flex-start;gap:.75rem;padding:.875rem 1rem;cursor:pointer;transition:background-color .15s ease;border-bottom:1px solid var(--border-subtle)}.notification-item:last-child{border-bottom:none}.notification-item:hover{background-color:var(--color-overlay-white-06)}.notification-item:focus{outline:none;background-color:var(--color-overlay-white-12)}.notification-item--unread{background-color:#7c3aed0d;border-left:3px solid var(--color-accent, #7c3aed)}.notification-item--unread:hover{background-color:#7c3aed14}.notification-item__icon{flex-shrink:0;width:24px;height:24px}.notification-item__icon svg{width:100%;height:100%}.notification-item__content{flex:1;min-width:0}.notification-item__title{font-size:.9rem;font-weight:600;color:var(--text-hint);margin-bottom:.25rem}.notification-item__body{font-size:.8rem;color:var(--text-hint);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notification-item--unread .notification-item__title{color:var(--text-primary)}.notification-item--unread .notification-item__body{color:var(--text-secondary)}.notification-item__time{flex-shrink:0;font-size:.75rem;color:var(--text-muted);white-space:nowrap}@media (max-width: 400px){.notification-panel{width:calc(100vw - 2rem);right:-.5rem}}.notification-bell{position:relative;z-index:2000}.notification-bell__button{background:none;border:none;padding:.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;position:relative}.notification-bell__button:hover{opacity:.8}.notification-bell__button:focus{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:4px}.notification-bell__button:focus:not(:focus-visible){outline:none}.notification-bell__icon{width:24px;height:24px;color:#fff}.notification-bell__badge{position:absolute;top:0;right:0;min-width:16px;height:16px;padding:0 4px;background-color:var(--color-alert, #8bc34a);color:#1a1a1a;font-size:.7rem;font-weight:700;border-radius:8px;display:flex;align-items:center;justify-content:center;line-height:1}.period-toggle{background:var(--color-overlay-white-06);color:var(--color-white);font-weight:600;border:2px solid var(--color-overlay-white-20);border-radius:12px;padding:.3rem .85rem;font-size:.85rem;cursor:default;white-space:nowrap;transition:background .2s,border-color .2s}.period-toggle--toggleable{cursor:pointer}.period-toggle--toggleable:hover{background:var(--color-overlay-white-15);border-color:var(--color-accent-soft)}.period-toggle--static{opacity:.6}.app-footer-wrapper{width:100%;background-color:var(--bg-footer);display:flex;justify-content:center;padding:.05rem 1rem;color:var(--color-white);font-size:.9rem}.app-footer-inner{max-width:960px;width:100%;text-align:center}.navbar{display:flex;justify-content:center;gap:20px;padding:10px 10px 4px}.navbar a,.navbar .logout-link{color:var(--color-white);text-decoration:none;margin-right:1rem;cursor:pointer}.navbar a:hover,.navbar .logout-link:hover{color:var(--color-gray-150);text-decoration:underline}.avatar-container{position:fixed;top:12rem;right:1rem;display:flex;flex-direction:column;align-items:center;z-index:900;font-family:Arial,sans-serif}.avatar-head{position:relative;width:44px;height:44px;background-color:var(--color-warning);border-radius:50%;margin-bottom:4px;box-shadow:0 2px 4px var(--color-overlay-black-20)}.avatar-head:before{content:"";position:absolute;top:14px;left:50%;width:7px;height:7px;background:var(--color-black);border-radius:50%;transform:translate(-12px);box-shadow:12px 0 0 0 var(--color-black)}.avatar-head:after{content:"";position:absolute;left:50%;bottom:8px;width:22px;height:11px;transform:translate(-50%);border:2px solid transparent;border-bottom-color:var(--color-black);border-radius:0 0 22px 22px}.avatar-body{width:48px;height:64px;background-color:var(--color-success);border-radius:8px 8px 16px 16px;position:relative;box-shadow:0 4px 8px var(--color-overlay-black-20)}.avatar-arm{position:absolute;width:10px;height:40px;background-color:var(--color-success);border-radius:8px;top:6px;left:-16px;right:auto;transform-origin:top right;animation:swing .75s ease-in-out infinite alternate}@keyframes swing{0%{transform:rotate(-15deg)}to{transform:rotate(15deg)}}.avatar-message{order:-1;margin-top:0;margin-bottom:8px;background:var(--color-warning-bright);color:var(--color-black);padding:6px 10px;border-radius:16px;box-shadow:0 2px 6px var(--color-overlay-black-10);font-size:1rem;font-family:Comic Sans MS,Comic Sans,cursive;text-align:center;max-width:180px}.summary-line{display:flex;justify-content:center;align-items:baseline;gap:.5rem;margin:1.5rem 0;text-align:center;flex-wrap:wrap}.summary-primary{margin-top:2rem;margin-bottom:1.75rem}.summary-secondary{font-size:1.05rem;opacity:.9}.summary-label{font-weight:600;color:var(--color-accent-soft)}.summary-value{color:var(--color-white);font-weight:600}.summary-sep{margin:0 .75rem;opacity:.6}.summary-weekly-avg{font-size:2.6rem;font-weight:800;color:var(--color-accent-glow);line-height:1;letter-spacing:-.02em;text-shadow:0 0 6px var(--color-overlay-accent-60),0 0 12px var(--color-overlay-accent-35)}.summary-unit{font-size:1.2rem;margin-left:.15rem;color:var(--color-accent-pale);align-self:flex-end}.study-form{max-width:600px;margin:0 auto;background-color:var(--color-primary-lighter);padding:2rem;border-radius:8px}.study-form label{font-weight:700;color:var(--color-white);margin-bottom:.4rem}.study-form input,.study-form select{width:100%;padding:.5rem;margin-top:.25rem;margin-bottom:1rem;border-radius:4px;border:1px solid var(--color-gray-200)}.form-page h1{margin-bottom:1.5rem}.form-page form{margin-bottom:2rem}.time-group{display:flex;gap:1rem}.time-group>div{flex:1}.date-input-wrapper{position:relative}.date-input-wrapper input[type=text]{padding-right:2.5rem;width:100%}.date-field-icon{position:absolute;right:.75rem;top:calc(50% - .5rem);transform:translateY(-50%);color:var(--color-white)}.course-label{font-size:1.8rem}.study-form input.error,.study-form select.error{border-color:var(--border-hint);border-width:2px}.study-form .error-text{color:var(--text-hint);font-size:.85rem;font-weight:600;margin-top:-.75rem;margin-bottom:.75rem;display:block}.study-table{width:100%;border-collapse:collapse;margin-top:2rem;background-color:var(--bg-card);color:var(--color-white);border:1px solid var(--border-primary)}.study-table th{background-color:var(--bg-header);color:var(--color-white);padding:.75rem;text-align:left}.study-table td{padding:.75rem;border-bottom:1px solid var(--border-primary)}.study-table tr:nth-child(2n){background-color:var(--bg-card-alt)}.clickable-row{cursor:pointer;transition:background-color .15s ease-in-out}.clickable-row:hover td{font-weight:600;background-color:var(--hover-bg)}.form-page{max-width:960px;margin:0 auto;padding:2rem;color:var(--color-white)}.form-page h1{text-align:center;margin-bottom:1.5rem}.form-page p.subtitle{text-align:center;margin-bottom:2rem;color:var(--color-gray-150)}.study-form{max-width:600px;margin:0 auto;background-color:var(--color-primary-lighter);padding:2rem;border-radius:8px;box-shadow:0 4px 6px var(--color-overlay-black-20)}.study-form label{font-weight:700;color:var(--color-white);display:block;margin-bottom:.4rem}.study-form input,.study-form select{width:100%;padding:.5rem;margin-bottom:1rem;border-radius:4px;border:1px solid var(--color-gray-200);background-color:var(--bg-input);color:var(--color-white);text-align:left!important}.study-form input[type=date]{text-align:left!important}.study-form input:focus,.study-form select:focus{text-align:left!important}.study-form button{width:100%;padding:.75rem;background-color:var(--bg-button);color:var(--color-white);border:2px solid var(--border-accent);border-radius:4px;cursor:pointer;font-weight:700;transition:background-color .3s ease,border-color .3s ease}.study-form button:hover{background-color:var(--color-accent);border-color:var(--color-white)}.tiptap-wrapper{border:1px solid var(--color-gray-150);border-radius:4px;overflow:hidden;box-shadow:0 1px 3px var(--color-overlay-black-10)}.tiptap-toolbar{display:flex;flex-wrap:wrap;gap:2px;padding:6px 4px;background:var(--color-gray-50);border-bottom:1px solid var(--color-gray-150)}.tiptap-toolbar button{padding:4px 6px;border:1px solid transparent;background:var(--color-white);border-radius:2px;cursor:pointer;height:28px;min-width:28px;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--color-gray-800)}.tiptap-toolbar button:hover:not(:disabled){background:var(--color-gray-75)}.tiptap-toolbar button:disabled{opacity:.3;cursor:not-allowed}.tiptap-toolbar button.is-active{background:var(--color-gray-150);border-color:var(--color-gray-200)}.tiptap-toolbar button:nth-child(4){text-align:left}.tiptap-toolbar button:nth-child(5){text-align:center}.tiptap-toolbar button:nth-child(6){text-align:right}.tiptap-toolbar button:nth-child(7){font-size:18px}.tiptap-toolbar button:nth-child(8){font-size:16px}.tiptap-surface{min-height:200px;padding:12px;line-height:1.5;background:var(--color-white);color:var(--color-gray-800)}.tiptap-surface p{margin:8px 0}.tiptap-surface ul,.tiptap-surface ol{padding-left:2em;margin:8px 0}.tiptap-surface blockquote{border-left:3px solid var(--color-gray-150);padding-left:1em;margin:8px 0;color:var(--color-gray-800);font-style:italic}.tiptap-surface pre{background:var(--color-gray-25);padding:1em;border-radius:3px;overflow-x:auto;margin:8px 0}.tiptap-surface a{color:var(--color-link-alt);text-decoration:underline}.tiptap-surface p[style*="text-align: left"],.tiptap-surface h1[style*="text-align: left"],.tiptap-surface h2[style*="text-align: left"],.tiptap-surface h3[style*="text-align: left"]{text-align:left}.tiptap-surface p[style*="text-align: center"],.tiptap-surface h1[style*="text-align: center"],.tiptap-surface h2[style*="text-align: center"],.tiptap-surface h3[style*="text-align: center"]{text-align:center}.tiptap-surface p[style*="text-align: right"],.tiptap-surface h1[style*="text-align: right"],.tiptap-surface h2[style*="text-align: right"],.tiptap-surface h3[style*="text-align: right"]{text-align:right}.tiptap-surface ul{list-style-type:disc}.tiptap-surface ol{list-style-type:decimal}.attachments-panel .attachments-form .btn-primary,.attachments-panel .attachments-actions .btn-primary{background:var(--bg-button)!important;color:var(--color-white)!important;border:1px solid var(--border-accent)!important;border-radius:6px!important;padding:8px 12px!important;cursor:pointer!important}.attachments-panel .attachments-form .btn-primary:hover,.attachments-panel .attachments-actions .btn-primary:hover{background:var(--color-primary-dark)!important}.attachments-panel .attachments-form .btn-primary:disabled,.attachments-panel .attachments-actions .btn-primary:disabled{cursor:not-allowed!important;opacity:.6!important}.attachments-panel .attachments-table .btn-danger{background:var(--bg-button)!important;color:var(--color-white)!important;border:1px solid var(--border-error)!important;border-radius:6px!important;padding:6px 10px!important;cursor:pointer!important}.attachments-panel .attachments-table .btn-danger:hover{background:var(--color-primary-dark)!important}.attachments-tab-btn{background:var(--bg-button);color:var(--color-white);border:1px solid var(--border-accent);border-radius:6px;padding:8px 16px;margin-right:8px;cursor:pointer;font-weight:500}.attachments-tab-btn:hover{background:var(--color-primary-dark)}.attachments-tab-btn.active{background:var(--color-primary-dark);border-color:var(--color-accent-soft);color:var(--color-white)}.attachments-tab-btn:focus{outline:2px solid var(--color-accent-soft);outline-offset:2px}.attachments-form input[type=text],.attachments-form input[type=url],.attachments-form input[type=file]{color:var(--color-black)!important;background-color:var(--color-white)!important}.attachments-form textarea{background-color:var(--color-white)!important;color:var(--color-black)!important;border:1px solid var(--color-gray-150)!important}.attachments-table .name-cell{width:50%;word-wrap:break-word;word-break:break-word;white-space:normal;padding:8px}.attachments-table .name-cell a,.attachments-table .name-cell button{white-space:normal;word-wrap:break-word;text-decoration:underline;color:var(--color-white)}.attachments-table .desc{display:block;font-size:.85rem;color:var(--color-gray-200);margin-top:4px;white-space:normal;word-wrap:break-word}.attachments-table th:nth-child(3),.attachments-table td:nth-child(3){width:10%;text-align:right;padding:8px;white-space:nowrap}.attachments-table th:nth-child(4),.attachments-table td:nth-child(4){width:25%;text-align:right;padding:8px;white-space:nowrap}.attachments-table th:nth-child(5),.attachments-table td:nth-child(5){width:15%;text-align:right;padding:8px;white-space:nowrap}.attachments-form input[type=file]{color:var(--color-black)!important}.attachments-form input[type=file]::file-selector-button{background:var(--color-white)!important;color:var(--color-black)!important;border:1px solid var(--color-gray-150)!important;border-radius:6px!important;padding:6px 10px!important;cursor:pointer!important}.attachments-form input[type=file]::-webkit-file-upload-button{background:var(--color-white)!important;color:var(--color-black)!important;border:1px solid var(--color-gray-150)!important;border-radius:6px!important;padding:6px 10px!important;cursor:pointer!important}.attachments-table .name-cell{width:60%!important}.attachments-table th:nth-child(2),.attachments-table td:nth-child(2){width:60%!important}.attachments-table th:nth-child(3),.attachments-table td:nth-child(3){width:8%!important;text-align:right;padding:8px;white-space:nowrap}.attachments-table th:nth-child(4),.attachments-table td:nth-child(4){width:20%!important;text-align:right;padding:8px;white-space:nowrap}.attachments-table th:nth-child(5),.attachments-table td:nth-child(5){width:12%!important;text-align:right;padding:8px;white-space:nowrap}.attachments-table th:nth-child(4),.attachments-table td:nth-child(4){width:14%!important;white-space:normal!important;word-break:keep-all;line-height:1.2;font-size:.95rem}.selected-files-list{display:flex;flex-direction:column;gap:4px;margin:8px 0;padding:8px;border:1px solid var(--color-gray-150);border-radius:6px;background:var(--color-white, #fff);color:var(--color-black, #000)}.selected-file-item{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:.9rem}.selected-file-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selected-file-size{color:var(--color-gray-500, #666);font-size:.8rem;white-space:nowrap}.selected-file-remove{background:none;border:none;color:var(--color-error, #e74c3c);cursor:pointer;font-size:1.2rem;line-height:1;padding:2px 6px;border-radius:4px}.selected-file-remove:hover{background:var(--color-error, #e74c3c);color:var(--color-white)}.selected-file-remove:disabled{opacity:.4;cursor:not-allowed}.attachments-table th:nth-child(2),.attachments-table td:nth-child(2),.attachments-table .name-cell{width:64%!important}.attachments-table th:nth-child(3),.attachments-table td:nth-child(3){width:8%!important;text-align:right;white-space:nowrap}.attachments-table th:nth-child(5),.attachments-table td:nth-child(5){width:14%!important;text-align:right;white-space:nowrap}.notes-layout{width:100%;max-width:none;margin:0;padding:16px;display:grid;grid-template-columns:var(--ribbon-col) 1fr var(--right-col);gap:16px}.notes-layout:has(.session-ribbon.collapsed){--ribbon-col: 18px}.pane-card{background:var(--color-overlay-white-06);border:1px solid var(--border-subtle);border-radius:10px;padding:12px}.session-ribbon{position:relative;min-height:120px;overflow:hidden}.session-ribbon.collapsed{padding:0;display:flex;align-items:center;justify-content:center}.session-ribbon .collapse-toggle{position:absolute;top:6px;right:6px;background:var(--bg-button);color:var(--color-white);border:1px solid var(--border-accent);border-radius:6px;padding:2px 6px;cursor:pointer}.session-ribbon.collapsed .collapse-toggle{position:static;margin:0}.ribbon-content{margin-top:24px}.ribbon-title{margin:0 0 8px;color:var(--color-white)}.ribbon-line{display:flex;justify-content:space-between;padding:6px 4px;border-bottom:1px dashed var(--color-overlay-white-12)}.ribbon-line .label{color:var(--color-gray-150);font-size:.9rem}.ribbon-line .value{color:var(--color-white);font-weight:600}.flash-card-sidebar-btn{margin-top:16px;width:100%;padding:16px 12px;font-size:1.1rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;border-radius:12px;box-shadow:0 4px 12px var(--color-overlay-black-20);transition:transform .1s ease,box-shadow .1s ease}.flash-card-sidebar-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 16px var(--color-overlay-black-30)}.flash-card-sidebar-btn:active:not(:disabled){transform:translateY(1px);box-shadow:0 2px 6px var(--color-overlay-black-20)}.editor-column{display:block}.editor-inner{width:100%;max-width:none}.notes-error{color:var(--color-gray-400, #9ca3af);font-size:.85rem;font-weight:600;margin-bottom:.75rem;padding:.5rem .75rem;background:var(--color-overlay-white-06);border-radius:6px;border:1px solid var(--color-gray-400, #9ca3af)}.context-banner{background:var(--color-overlay-white-06);border:1px solid var(--border-subtle);border-radius:10px;padding:10px 12px;margin-bottom:12px}.context-line{display:flex;gap:16px;align-items:center;flex-wrap:wrap;color:var(--color-white)}.mode-pill{margin-left:auto;background:var(--color-accent-soft);color:var(--color-primary-darkest);padding:2px 8px;border-radius:999px;font-weight:700;font-size:.9rem}.missing-params{display:flex;align-items:center;gap:8px}.editor-surface{background:var(--color-white);color:var(--color-black);border:1px solid var(--color-gray-150);border-radius:10px;padding:10px;min-height:320px;max-height:65vh;overflow:auto;box-shadow:0 2px 10px var(--color-overlay-black-08)}.editor-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}.editor-actions button{background:var(--bg-button);color:var(--color-white);border:1px solid var(--border-accent);border-radius:6px;padding:8px 12px;cursor:pointer}.editor-actions button:hover{background:var(--color-primary-dark)}.char-counter{font-size:.85rem;color:var(--color-gray-400);margin-right:auto;align-self:center}.char-counter.over-limit{color:var(--text-error);font-weight:600}.thread-section{margin-top:18px}.thread-section h2{text-align:center;margin-bottom:8px}.thread-list{margin-top:6px}.note-item{margin-top:12px}.note-card{background:var(--bg-card);border-radius:10px;padding:10px 12px;border:1px solid var(--border-primary)}.note-meta{font-size:12px;opacity:.9;margin-bottom:6px;color:var(--color-white)}.note-content{background:var(--color-white);color:var(--color-black);border-radius:6px;padding:8px 10px;border:1px solid var(--color-gray-100)}.note-actions{display:flex;gap:8px;margin-top:6px}.note-actions button{background:var(--bg-button);color:var(--color-white);border:1px solid var(--border-accent);border-radius:6px;padding:6px 10px;cursor:pointer}.note-actions button:hover{background:var(--color-primary-dark)}.note-actions .danger{border-color:var(--border-error)}.right-column{display:flex;flex-direction:column;gap:16px}.save-entry-btn{width:fit-content;min-width:144px;padding:40px 12px;align-self:center;font-size:1.1rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;border-radius:12px;box-shadow:0 4px 12px var(--color-overlay-black-20);transition:transform .1s ease,box-shadow .1s ease}.save-entry-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 16px var(--color-overlay-black-30)}.save-entry-btn:active:not(:disabled){transform:translateY(1px);box-shadow:0 2px 6px var(--color-overlay-black-20)}.attachments-panel{min-height:120px}.attachments-header h3{margin:0 0 8px;color:var(--color-white)}.attachments-actions{display:flex;gap:8px;margin-bottom:10px}.attachments-actions button{background:var(--bg-button);color:var(--color-white);border:1px solid var(--border-accent);border-radius:6px;padding:6px 10px;cursor:not-allowed}.attachments-actions button:hover{background:var(--color-primary-dark)}.attachments-list .muted{color:var(--color-gray-150);font-size:.95rem}.editor-surface .tiptap{background:var(--color-white);color:var(--color-black);padding:10px 12px;border-radius:6px;min-height:260px;line-height:1.5}.editor-surface .tiptap *,.note-content *{color:var(--color-black)}.editor-surface .tiptap p{margin:.5rem 0}.editor-surface .tiptap h1,.editor-surface .tiptap h2,.editor-surface .tiptap h3,.editor-surface .tiptap h4,.editor-surface .tiptap h5,.editor-surface .tiptap h6{color:var(--color-black);margin:.6rem 0}.editor-surface .tiptap blockquote{background:var(--color-gray-10);border-left:4px solid var(--color-gray-150);padding:8px 10px}.editor-surface .tiptap pre{background:var(--color-gray-20);color:var(--color-black);padding:10px;border-radius:6px;overflow:auto}@media (max-width: 1200px){.notes-layout{--right-col: clamp(260px, 30vw, 360px);gap:12px;padding:12px}}@media (max-width: 980px){.notes-layout{grid-template-columns:var(--ribbon-col) 1fr}.right-column{display:none}}.discard-dialog-overlay{position:fixed;inset:0;background:var(--color-overlay-black-50, rgba(0, 0, 0, .5));display:flex;align-items:center;justify-content:center;z-index:1000}.discard-dialog{background:var(--color-primary-dark, #1a1a2e);color:var(--color-white);border:2px solid var(--color-accent, #9b59b6);border-radius:12px;padding:24px;max-width:400px;text-align:center;box-shadow:0 8px 32px var(--color-overlay-black-30)}.discard-dialog p{margin:0 0 20px;font-size:1.1rem;line-height:1.5}.discard-dialog-actions{display:flex;gap:12px;justify-content:center}.discard-dialog .btn-cancel{background:transparent;color:var(--color-white);border:1px solid var(--color-gray-400);border-radius:8px;padding:10px 20px;cursor:pointer;font-weight:600}.discard-dialog .btn-cancel:hover{background:var(--color-overlay-white-06)}.discard-dialog .btn-confirm{background:var(--color-accent, #9b59b6);color:var(--color-white);border:none;border-radius:8px;padding:10px 20px;cursor:pointer;font-weight:600}.discard-dialog .btn-confirm:hover{background:var(--color-accent-dark, #8e44ad)}.container-wide{max-width:1200px}.notes-table{width:100%}.notes-preview{max-width:520px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notes-updated{white-space:nowrap}.subject-filter{width:100%;padding:.5rem;font-size:.95rem}.notes-filter{display:flex;align-items:center;justify-content:center;gap:.5rem;margin:1rem 0 1.5rem}.notes-filter label{font-size:1rem;color:var(--text-accent);font-weight:700}.notes-filter select{min-width:240px;padding:.45rem .6rem;font-size:.95rem;border:2px solid var(--color-white);background-color:var(--bg-input);color:var(--color-white);border-radius:6px;outline:none;cursor:pointer;box-shadow:0 2px 4px var(--color-overlay-black-20)}.notes-filter select:focus{border-color:var(--color-accent-soft);box-shadow:0 0 6px var(--color-overlay-accent-soft-50)}.notes-filter-box{display:flex;justify-content:center;margin:1rem 0 1.5rem}.notes-filter-box select{min-width:240px;padding:.45rem .6rem;font-size:.95rem}.page-title{text-align:center;margin-bottom:1.5rem}.filters{display:flex;gap:1.5rem;margin-bottom:1.5rem;flex-wrap:wrap}.filters label{display:flex;gap:.5rem;align-items:center;font-size:1rem;color:var(--text-accent);font-weight:700}.filters select{padding:.45rem .6rem;font-size:.95rem;border:2px solid var(--color-white);background-color:var(--bg-input);color:var(--color-white);border-radius:6px;outline:none;cursor:pointer}.filters select:focus{border-color:var(--color-accent-soft)}.results-table{width:100%;border-collapse:collapse}.results-table th,.results-table td{padding:.6rem;border-bottom:1px solid var(--color-gray-150);text-align:left}.results-table th{font-weight:600}.passed{color:var(--color-success);font-weight:700}.failed{color:var(--color-error);font-weight:700}.loading,.empty-state,.error{text-align:center;margin-top:2rem}.error{color:var(--color-error)}.exam-upload-panel{max-width:900px;margin:0 auto;padding:1.5rem;background:var(--bg-card);border-radius:8px;border:1px solid var(--border-primary)}.exam-upload-container{display:flex;gap:2rem;align-items:flex-start}.exam-upload-form{flex:1;min-width:0}.exam-upload-title{margin:0 0 1rem;font-size:1.1rem;font-weight:600;color:var(--color-white)}.exam-upload-fields{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-end}.exam-upload-field{display:flex;flex-direction:column;gap:.25rem}.exam-upload-field:nth-child(1){flex:0 0 auto}.exam-upload-field:nth-child(2){flex:1 1 150px;min-width:120px}.exam-upload-field:nth-child(3){flex:1 1 150px;min-width:120px}.exam-upload-label{font-size:.85rem;font-weight:500;color:var(--color-overlay-white-90);margin-bottom:0}.exam-upload-label .req{color:var(--text-error);margin-left:2px}.exam-upload-field input[type=text]{padding:.5rem .75rem;border:1px solid var(--border-primary);border-radius:4px;background:var(--bg-input);color:var(--color-white);font-size:.9rem;margin-bottom:0}.exam-upload-field input[type=text]:focus{outline:none;border-color:var(--color-accent-focus);box-shadow:0 0 0 2px var(--focus-shadow)}.exam-upload-field input[type=text]::placeholder{color:var(--color-gray-400)}.exam-upload-field input[type=file]{font-size:.85rem;color:var(--color-white);margin-bottom:0}.exam-upload-field input[type=file]::file-selector-button{background:var(--bg-button);color:var(--color-white);border:1px solid var(--border-accent);border-radius:4px;padding:.4rem .75rem;cursor:pointer;margin-right:.5rem}.exam-upload-field input[type=file]::file-selector-button:hover{background:var(--color-primary-dark)}.exam-upload-field input[type=file]::-webkit-file-upload-button{background:var(--bg-button);color:var(--color-white);border:1px solid var(--border-accent);border-radius:4px;padding:.4rem .75rem;cursor:pointer;margin-right:.5rem}.exam-upload-error{color:var(--text-error);font-size:.85rem;margin-top:.75rem;margin-bottom:0}.exam-upload-success{color:var(--text-success);font-size:.85rem;margin-top:.75rem;margin-bottom:0}.exam-upload-list{flex:1;min-width:250px;max-width:350px;background:var(--bg-input);border-radius:6px;padding:1rem;border:1px solid var(--border-primary)}.exam-upload-list-title{margin:0 0 .75rem;font-size:.95rem;font-weight:600;color:var(--color-white)}.exam-upload-empty{color:var(--text-muted);font-size:.85rem;font-style:italic;margin:0}.exam-upload-files{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.exam-upload-file-item{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:var(--color-primary-dark);border-radius:4px}.exam-upload-file-icon{flex-shrink:0}.exam-upload-file-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-white);font-size:.85rem}.exam-upload-file-size{flex-shrink:0;color:var(--text-muted);font-size:.8rem}.exam-upload-remove-btn{flex-shrink:0;background:transparent;border:1px solid var(--border-error);color:var(--text-error);width:24px;height:24px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1rem;line-height:1;padding:0}.exam-upload-remove-btn:hover{background:var(--color-overlay-error-dark-20)}@media (max-width: 700px){.exam-upload-container{flex-direction:column}.exam-upload-list{max-width:none;width:100%}.exam-upload-fields{flex-direction:column;align-items:stretch}.exam-upload-field{flex:none!important}.exam-upload-btn{width:100%}}.exam-grid-container{max-width:800px;margin:0 auto;background:var(--bg-card);border-radius:8px;box-shadow:0 1px 3px var(--color-overlay-black-10);overflow:hidden;border:1px solid var(--border-primary)}.exam-grid-header{display:grid;grid-template-columns:2fr 140px 80px 70px 60px;gap:8px;padding:12px 16px;background:var(--bg-header);border-bottom:2px solid var(--border-primary);font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.5px;color:var(--color-white)}.exam-grid-body{max-height:60vh;overflow-y:auto}.exam-grid-row{display:grid;grid-template-columns:2fr 140px 80px 70px 60px;gap:8px;padding:10px 16px;border-bottom:1px solid var(--border-primary);align-items:center;transition:background .15s}.exam-grid-row:nth-child(2n){background-color:var(--bg-card-alt)}.exam-grid-row:hover{background:var(--hover-bg)}.exam-grid-row:last-child{border-bottom:none}.col-subject{font-weight:500;color:var(--color-white);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.col-date,.col-score,.col-max{display:flex;align-items:center}.col-percent{font-weight:600;text-align:right;color:var(--color-white);font-size:.95rem}.exam-grid-row input{width:100%;padding:6px 8px;border:1px solid var(--border-primary);border-radius:4px;font-size:.9rem;background:var(--bg-input);color:var(--color-white);transition:border-color .15s,box-shadow .15s}.exam-grid-row input:focus{outline:none;border-color:var(--color-accent-focus);box-shadow:0 0 0 2px var(--focus-shadow)}.exam-grid-row input[type=number]{text-align:center;-moz-appearance:textfield}.exam-grid-row input[type=number]::-webkit-outer-spin-button,.exam-grid-row input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.exam-grid-row input::placeholder{color:var(--color-gray-400)}.exam-grid-row input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1)}.exam-grid-actions{display:flex;justify-content:space-between;align-items:center;padding:16px;background:var(--bg-header);border-top:1px solid var(--border-primary)}.filled-count{font-size:.85rem;color:var(--color-gray-200)}.exam-grid-row.has-error{background:var(--color-overlay-error-10)}.exam-grid-row input.input-error{border-color:var(--color-error);background:var(--color-overlay-error-15)}.exam-grid-row input.input-error:focus{border-color:var(--color-error);box-shadow:0 0 0 2px var(--color-overlay-error-20)}.exam-grid-error{grid-column:1 / -1;padding:4px 16px 8px;font-size:.8rem;color:var(--text-error);background:var(--color-overlay-error-10)}.validation-warning{color:var(--text-error);font-size:.85rem;font-weight:500}@media (max-width: 640px){.exam-grid-header,.exam-grid-row{grid-template-columns:1fr 110px 60px 50px 50px;gap:4px;padding:8px 12px}.exam-grid-header{font-size:.75rem}.col-subject{font-size:.85rem}.exam-grid-row input{padding:4px 6px;font-size:.85rem}}.insights-charts-row{display:flex;gap:2rem;flex-wrap:wrap}.insights-charts-row>.chart-section{flex:1;min-width:400px}.card{padding-left:1rem;margin-bottom:1rem}.children-list{list-style:none;padding:0;margin:0}.child-item{display:flex;align-items:center;padding:.5rem 0 .5rem 1rem;font-size:1.2rem}.child-name{min-width:12rem}.child-link{background:none;border:none;color:var(--link-color, #6db3f2);cursor:pointer;text-decoration:underline;font:inherit;padding:0;text-align:left}.child-link:hover{color:var(--link-hover-color, #9ecbf7)}.child-info{color:var(--text-muted, rgba(255, 255, 255, .6));margin-left:2rem}.badges-section-parent{padding:1rem}.badges-section-parent h2{margin-bottom:1.5rem;color:var(--text-primary, rgba(255, 255, 255, .87))}.badges-grid-parent{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1.5rem}.badges-empty{text-align:center;padding:2rem;color:var(--text-muted, rgba(255, 255, 255, .6))}.badge-card__image{object-fit:contain;margin-bottom:1rem}.badge-card--sm .badge-card__image{width:32px;height:32px}.badge-card--md .badge-card__image{width:64px;height:64px}.badge-card--lg .badge-card__image{width:96px;height:96px}.badge-card__name{font-weight:600;color:var(--color-text);font-size:.95rem;white-space:pre-line}.badge-card--sm{padding:.75rem .5rem}.badge-card--sm .badge-card__name{font-size:.8rem}.badge-card--sm .badge-card__date{font-size:.7rem}.badge-card--clickable{cursor:pointer}.badge-card--clickable:focus{outline:2px solid var(--color-accent);outline-offset:2px}.badge-card--clickable:focus:not(:focus-visible){outline:none}.badge-card--clickable:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.badge-modal-overlay{position:fixed;inset:0;background:var(--color-overlay-black-70);display:flex;align-items:center;justify-content:center;z-index:1100;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.badge-modal-container{display:flex;align-items:center;gap:2rem}.badge-modal{position:relative;background:var(--bg-card);border-radius:16px;padding:2rem;max-width:420px;width:90vw;max-height:90vh;overflow-y:auto;display:flex;flex-direction:column;align-items:center;text-align:center;border:6px solid;box-shadow:0 8px 32px var(--color-overlay-black-40);animation:slideUp .4s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.badge-modal__close{position:absolute;top:.75rem;right:.75rem;background:none;border:none;font-size:1.75rem;color:var(--color-text-secondary);cursor:pointer;line-height:1;padding:.25rem;transition:color .2s;z-index:1}.badge-modal__close:hover{color:var(--color-text)}.badge-modal__header{font-size:1.75rem;font-weight:700;color:var(--color-accent-glow);margin:0 0 1rem;display:flex;align-items:center;gap:.5rem}.badge-modal__firework{font-size:1.5rem;animation:sparkle 1.5s ease-in-out infinite}.badge-modal__firework:last-child{animation-delay:.75s}@keyframes sparkle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.2)}}.badge-modal__image-container{margin-bottom:1rem}.badge-modal__image{width:160px;height:160px;object-fit:contain;animation:bounceIn .6s ease .2s both}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{transform:scale(1.1)}70%{transform:scale(.9)}to{opacity:1;transform:scale(1)}}.badge-modal__name{font-size:1.25rem;font-weight:600;color:var(--color-text);margin:0 0 .5rem;white-space:pre-line}.badge-modal__description{color:var(--color-text-secondary);font-size:1rem;line-height:1.5;margin:0 0 1rem}.badge-modal__message{font-size:1.3rem;font-weight:700;color:var(--color-accent-glow);margin:0 0 1.5rem;text-shadow:0 0 4px var(--color-overlay-accent-60),0 0 8px var(--color-overlay-accent-35),0 0 12px var(--color-overlay-accent-20);animation:pulse-glow 2s ease-in-out infinite}.badge-modal__back{margin-top:auto}.badge-modal__avatar{flex-shrink:0}.badge-modal__avatar .avatar-container{position:relative;top:auto;right:auto;z-index:auto}.badge-modal__avatar .avatar-container .avatar-message{max-width:200px;font-size:1.75rem!important;font-weight:700}@media (max-width: 700px){.badge-modal-container{flex-direction:column}.badge-modal{padding:1.5rem;max-width:90vw}.badge-modal__avatar{order:-1;margin-bottom:.5rem}.badge-modal__header{font-size:1.5rem}.badge-modal__image{width:120px;height:120px}.badge-modal__message{font-size:1.1rem}}.badge-display{display:flex;align-items:center;gap:.75rem}.badge-display--empty{color:var(--color-text-secondary)}.badge-display__link{color:var(--color-white);text-decoration:none;font-weight:500;transition:color .2s ease}.badge-display__link:hover{color:var(--color-accent-glow);text-decoration:underline}.badge-display__empty-text{color:var(--color-text-secondary)}.badge-display__grid{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.badge-display__item{display:flex;align-items:center;justify-content:center;transition:transform .2s ease}.badge-display__item:hover{transform:scale(1.1)}.badge-display__image{display:block;object-fit:contain}.badge-display--sm .badge-display__image{width:24px;height:24px}.badge-display--md .badge-display__image{width:48px;height:48px}.badge-display--lg .badge-display__image{width:96px;height:96px}.badge-display__more{display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:var(--bg-body);border-radius:50%;color:var(--color-white);font-weight:600;font-size:.9rem;text-decoration:none;transition:background-color .2s ease,transform .2s ease}.badge-display__more:hover{background:var(--color-primary-dark);transform:scale(1.1)}.badge-display--sm .badge-display__more{width:24px;height:24px;font-size:.7rem}.badge-display--lg .badge-display__more{width:96px;height:96px;font-size:1.2rem}.my-profile-page{max-width:1200px;margin:0 auto;padding:1.5rem 1rem;background-color:var(--bg-footer);min-height:100vh}.page-title-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.my-profile-page h1{font-size:1.5rem;font-weight:600;margin:0;color:var(--color-white)}.my-profile-page h2{font-size:1.2rem;font-weight:700;margin-top:-.25rem;margin-bottom:1.25rem;color:var(--color-text)}.profile-header .user-icon{background-color:var(--color-primary-darkest)}.profile-header{display:flex;align-items:center;gap:1.5rem;padding:1.5rem;background:var(--bg-card);border-radius:8px;margin-bottom:1.5rem;box-shadow:0 2px 4px var(--color-overlay-black-10);border:2px solid transparent;transition:border-color .3s ease}.profile-header.editing,.profile-details.editing{border:2px solid var(--border-accent)}.profile-info{display:flex;flex-direction:column;gap:.5rem;flex:1}.profile-actions{display:flex;gap:.5rem;margin-left:auto;align-items:flex-start}.profile-actions .btn{padding:.75rem 1.5rem;border-radius:4px;font-weight:500;font-size:1rem;cursor:pointer;transition:background-color .3s ease,border-color .3s ease}.profile-actions .btn-primary{background-color:var(--bg-button);color:var(--color-white);border:2px solid var(--border-accent)}.profile-actions .btn-primary:hover:not(:disabled){background-color:var(--color-accent);border-color:var(--color-white)}.profile-actions .btn-secondary{background-color:var(--color-primary-dark);color:var(--color-white);border:2px solid var(--color-primary-light)}.profile-actions .btn-secondary:hover:not(:disabled){background-color:var(--color-primary-light);border-color:var(--color-accent)}.profile-actions .btn:disabled{opacity:.5;cursor:not-allowed}.profile-field{display:flex;gap:.5rem}.profile-field .label{color:var(--color-text-secondary);font-weight:500;min-width:100px}.profile-field .value{color:var(--color-text)}.profile-details{padding:1.5rem;background:var(--bg-card);border-radius:8px;margin-bottom:1.5rem;box-shadow:0 2px 4px var(--color-overlay-black-10);border:2px solid transparent;transition:border-color .3s ease}.details-grid{display:flex;flex-direction:column;gap:.75rem}.detail-row{display:flex;gap:.5rem}.profile-details.editing .detail-row{position:relative;padding-bottom:1.25rem}.detail-row .error-text{position:absolute;bottom:0;left:180px}.detail-row .label{color:var(--color-text-secondary);font-weight:500;min-width:180px}.detail-row .value{color:var(--color-text)}.profile-stats{padding:1.5rem;background:var(--bg-card);border-radius:8px;margin-bottom:1.5rem;box-shadow:0 2px 4px var(--color-overlay-black-10)}.profile-stats .details-grid{margin-bottom:1rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem}.stat-card{display:flex;flex-direction:column;align-items:center;padding:1rem;background:var(--bg-body);border-radius:8px;text-align:center}.stat-value{font-size:1.5rem;font-weight:700;color:var(--color-accent-glow);margin-bottom:.25rem;text-shadow:0 0 4px var(--color-overlay-accent-60),0 0 8px var(--color-overlay-accent-35);animation:pulse-glow 2s ease-in-out infinite}@keyframes pulse-glow{0%,to{opacity:1;text-shadow:0 0 4px var(--color-overlay-accent-60),0 0 8px var(--color-overlay-accent-35)}50%{opacity:.85;text-shadow:0 0 8px var(--color-overlay-accent-60),0 0 16px var(--color-overlay-accent-35),0 0 24px var(--color-overlay-accent-20)}}.stat-date{font-size:1.5rem;font-weight:700;color:var(--color-accent-glow);margin-top:.5rem;text-shadow:0 0 4px var(--color-overlay-accent-60),0 0 8px var(--color-overlay-accent-35)}.stat-label{font-size:1.1rem;color:var(--color-text-secondary)}.no-children{color:var(--color-text-secondary);font-style:italic}.my-profile-page .loading,.my-profile-page .error{text-align:center;padding:2rem;color:var(--color-text-secondary)}.my-profile-page .error{color:var(--color-error)}.coming-soon{color:var(--color-text-secondary);font-style:italic;margin:0}.edit-input{width:100%;padding:.5rem;border-radius:4px;border:1px solid var(--color-gray-200);background-color:var(--bg-input);color:var(--color-white);font-size:.95rem;min-width:200px;text-align:left!important}.edit-input:focus{outline:2px solid var(--color-accent);outline-offset:1px;text-align:left!important}.address-edit-section{display:flex;flex-direction:column;gap:.75rem;width:100%}.address-edit-row{display:flex;gap:.5rem}.address-edit-field{display:flex;gap:.5rem;position:relative;padding-bottom:1.25rem}.address-edit-field.flex-1{flex:1}.address-edit-field.flex-2{flex:2}.address-edit-field label{color:var(--color-text-secondary);font-weight:500;white-space:nowrap;line-height:2.2}.address-edit-row>.address-edit-field:first-child label{min-width:180px}.address-edit-field input,.address-edit-field select{flex:1;min-width:0}.address-edit-field.width-street-nr{flex:0 0 auto}.address-edit-field.width-street-nr input{width:100px}.address-edit-field.width-postal{flex:0 0 auto}.address-edit-field.width-postal input{width:120px}.address-edit-field.width-city{flex:1}.date-format-radios{display:flex;gap:1.5rem}.radio-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;color:var(--color-white)}.radio-label input[type=radio]{accent-color:var(--color-accent);width:18px;height:18px;cursor:pointer}.radio-label input[type=radio]:checked{accent-color:var(--color-accent)}.required{color:var(--text-hint);margin-left:.25rem}.edit-input.error{border-color:var(--border-hint);border-width:2px}.error-text{color:var(--text-hint);font-size:.85rem;font-weight:600;white-space:nowrap}.address-edit-field .error-text{position:absolute;bottom:0;left:0}.address-edit-row>.address-edit-field:first-child .error-text{left:180px}.badges-page{max-width:1200px;margin:0 auto;padding:1.5rem 1rem;background-color:var(--bg-footer);min-height:100vh}.badges-page .page-title-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.badges-page h1{font-size:1.5rem;font-weight:600;margin:0;color:var(--color-white)}.badges-section{position:relative;padding:1.5rem;background:var(--bg-card);border-radius:8px;box-shadow:0 2px 4px var(--color-overlay-black-10)}.badges-section__avatar{position:absolute;top:.5rem;right:-12rem}.badges-section__avatar .avatar-container{position:relative;top:auto;right:auto;z-index:auto}.badges-section__avatar .avatar-message{max-width:150px;font-size:.95rem}.badges-section h2{font-size:1.2rem;font-weight:700;margin-top:0;margin-bottom:1.25rem;color:var(--color-text)}.badges-empty{text-align:center;padding:2rem}.badges-empty p{color:var(--color-text-secondary);font-size:1.1rem;margin:0}.badges-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1.5rem}.badge-card{display:flex;flex-direction:column;align-items:center;padding:1.5rem 1rem;background:var(--bg-body);border-radius:12px;transition:transform .2s ease,box-shadow .2s ease}.badge-card:hover{transform:translateY(-4px);box-shadow:0 8px 16px var(--color-overlay-black-20)}.badge-card__image{width:96px;height:96px;object-fit:contain;margin-bottom:1rem}.badge-card__info{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.25rem}.badge-card__name{font-weight:600;color:var(--color-text);font-size:.95rem}.badge-card__date{color:var(--color-text-secondary);font-size:.85rem}.badges-page .loading,.badges-page .error{text-align:center;padding:2rem;color:var(--color-text-secondary)}.badges-page .error{color:var(--color-error)}@media (max-width: 600px){.badges-grid{grid-template-columns:repeat(2,1fr);gap:1rem}.badge-card{padding:1rem .75rem}.badge-card__image{width:64px;height:64px}}.flash-cards-page{max-width:1200px;margin:0 auto;padding:1rem 1.5rem 2rem}.flash-cards-page h1{margin-bottom:1rem}.flash-cards-tabs{display:flex;gap:0;margin-bottom:1.5rem;border-bottom:2px solid var(--border-subtle)}.flash-cards-tabs button{padding:.6rem 1.5rem;background:transparent;border:none;border-bottom:3px solid transparent;color:var(--text-secondary);font-size:1rem;cursor:pointer;transition:color .2s,border-color .2s}.flash-cards-tabs button:hover{color:var(--text-primary)}.flash-cards-tabs button.active{color:var(--text-accent);border-bottom-color:var(--color-accent)}.flash-card{perspective:800px;cursor:pointer;width:560px;height:315px}.flash-card-inner{position:relative;width:100%;height:100%;transition:transform .6s;transform-style:preserve-3d}.flash-card.flipped .flash-card-inner{transform:rotateY(180deg)}.flash-card-front,.flash-card-back{backface-visibility:hidden;position:absolute;inset:0;border-radius:12px;padding:24px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;overflow:auto;box-shadow:0 4px 16px var(--shadow-flash-card),0 1px 4px var(--shadow-flash-card);border:1px solid var(--border-primary);border-left:4px solid var(--color-accent)}.flash-card-front{background:var(--bg-flash-card-front);color:var(--text-flash-card);font-size:1.3rem}.flash-card-back{transform:rotateY(180deg);background:var(--bg-flash-card-back);color:var(--text-flash-card);font-size:1.2rem;justify-content:center}.flash-card-content{width:100%;text-align:left;font-size:inherit}.flash-card-content p{margin:.2rem 0}.flash-card-content ul,.flash-card-content ol{margin:.3rem 0;padding-left:1.4rem;text-align:left}.flash-card-content li{margin-bottom:.15rem}.flash-card-tag{position:absolute;top:8px;right:12px;font-size:.75rem;color:var(--text-flash-card-muted);font-style:italic}.flash-card-hint{position:absolute;bottom:8px;font-size:.7rem;color:var(--text-flash-card-muted)}.browse-controls{display:flex;gap:1rem;align-items:center;margin-bottom:1.5rem;flex-wrap:wrap}.browse-controls select,.quiz-setup select{min-width:240px;padding:.45rem .6rem;font-size:.95rem;border:2px solid var(--color-white);background-color:var(--bg-input);color:var(--color-white);border-radius:6px;outline:none;cursor:pointer;box-shadow:0 2px 4px var(--color-overlay-black-20)}.browse-controls select:focus,.quiz-setup select:focus{border-color:var(--color-accent-soft);box-shadow:0 0 6px var(--color-overlay-accent-soft-50)}.browse-controls .btn-submit{margin-left:auto}.flash-card-grid{display:flex;flex-wrap:wrap;gap:1.25rem;justify-content:flex-start}.flash-card-actions{display:flex;gap:.5rem;margin-top:.5rem;justify-content:center}.flash-card-actions button{padding:.25rem .6rem;font-size:.8rem;border-radius:4px;border:1px solid var(--border-subtle);background:var(--bg-button);color:var(--text-primary);cursor:pointer}.flash-card-actions button.danger{color:var(--color-error-light);border-color:var(--border-error)}.flash-card-wrapper{display:flex;flex-direction:column;align-items:center}@keyframes card-pickup{0%{transform:scale(.7);opacity:0;box-shadow:none}60%{opacity:1}to{transform:scale(1);opacity:1}}.quiz-area .flash-card-wrapper{animation:card-pickup .45s ease-out}.quiz-setup{display:flex;gap:1rem;align-items:center;margin-bottom:1.5rem;flex-wrap:wrap}.quiz-setup button{padding:.5rem 1rem}.quiz-area{display:flex;flex-direction:column;align-items:center;gap:1.5rem}.quiz-progress-bar{font-size:.9rem;color:var(--text-secondary)}.quiz-buttons{display:flex;gap:1rem}.quiz-buttons button{padding:.6rem 1.5rem;border-radius:8px;border:none;font-size:1rem;cursor:pointer;font-weight:600}.btn-correct{background:var(--color-success);color:var(--color-white)}.btn-incorrect{background:var(--color-error);color:var(--color-white)}.quiz-score-row{display:flex;align-items:center;gap:2rem;justify-content:center}.quiz-score{text-align:center;padding:2rem}.quiz-score h2{margin-bottom:1rem}.quiz-score .score-number{font-size:2rem;font-weight:700;color:var(--text-accent);margin-bottom:.5rem}.quiz-score .score-percentage{font-size:1.2rem;color:var(--text-secondary);margin-bottom:1.5rem}.quiz-avatar{flex-shrink:0}.flash-card-form{width:560px;max-width:100%;display:flex;flex-direction:column;gap:1rem}.flash-card-form label{display:flex;flex-direction:column;gap:.3rem;color:var(--text-secondary);font-size:.9rem}.flash-card-form .flash-card-editor-label{font-size:1.1rem;font-weight:600;color:var(--text-primary)}.flash-card-form input[type=text]{padding:.5rem;border-radius:6px;border:1px solid var(--border-primary);background:var(--bg-input);color:var(--text-primary);font-size:1.2rem}.flash-card-form .form-actions{display:flex;gap:.75rem}.no-cards-message{text-align:center;padding:2rem;color:var(--text-muted)}@media (max-width: 700px){.flash-card{width:100%;max-width:560px}.flash-card-grid{justify-content:center}}
