:root{--clr-primary:#6c63ff;--clr-primary-dark:#5a52e0;--clr-good:#22c55e;--clr-good-bg:#dcfce7;--clr-ok:#f59e0b;--clr-ok-bg:#fef3c7;--clr-bad:#ef4444;--clr-bad-bg:#fee2e2;--clr-bg:#f0eeff;--clr-card:#fff;--clr-border:#e5e7eb;--clr-text:#1f2937;--clr-text-light:#6b7280;--radius:16px;--radius-sm:10px;--shadow:0 2px 12px #6c63ff1a;--shadow-hover:0 6px 24px #6c63ff2e;--font:"Segoe UI", system-ui, -apple-system, sans-serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);background:var(--clr-bg);color:var(--clr-text);min-height:100vh;font-size:16px;line-height:1.5}.app{min-height:100vh}.main{flex-direction:column;gap:18px;max-width:1100px;margin:0 auto;padding:22px 14px 44px;display:flex}.header{background:var(--clr-primary);color:#fff;padding:calc(20px + env(safe-area-inset-top)) 24px 20px;box-shadow:0 2px 16px #6c63ff4d}.header-inner{align-items:center;gap:14px;max-width:1100px;margin:0 auto;display:flex}.header-icon{opacity:.9;flex-shrink:0}.header-text{flex:1}.header h1{letter-spacing:-.5px;font-size:1.6rem;font-weight:800}.header-subtitle{opacity:.8;margin-top:2px;font-size:.88rem}.header-class-badge{color:#fff;cursor:pointer;letter-spacing:.3px;background:#ffffff2e;border:2px solid #ffffff73;border-radius:24px;flex-shrink:0;padding:6px 18px;font-size:1rem;font-weight:700;transition:background .15s,border-color .15s}.header-class-badge:hover{background:#ffffff47;border-color:#ffffffb3}.overall-card{background:var(--clr-card);border-radius:var(--radius);text-align:center;box-shadow:var(--shadow);border:3px solid var(--clr-border);padding:28px 24px;transition:border-color .2s}.overall-card.good{border-color:var(--clr-good)}.overall-card.ok{border-color:var(--clr-ok)}.overall-card.bad{border-color:var(--clr-bad)}.overall-label{color:var(--clr-text-light);text-transform:uppercase;letter-spacing:.08em;font-size:.8rem;font-weight:700}.overall-value{color:var(--clr-text);margin:8px 0 6px;font-size:4rem;font-weight:900;line-height:1.1}.overall-card.good .overall-value{color:var(--clr-good)}.overall-card.ok .overall-value{color:var(--clr-ok)}.overall-card.bad .overall-value{color:var(--clr-bad)}.overall-meta{color:var(--clr-text-light);font-size:.9rem}.overall-top-row{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.overall-values-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:40px;margin:4px 0;display:flex}.overall-sim-block{flex-direction:column;align-items:center;gap:2px;display:flex}.overall-sim-label{text-transform:uppercase;letter-spacing:.08em;color:#0284c7;opacity:.85;font-size:.72rem;font-weight:700}.overall-sim-value{color:#0ea5e9;font-size:3rem;font-weight:900;line-height:1.1}.overall-sim-value.good{color:var(--clr-good)}.overall-sim-value.ok{color:var(--clr-ok)}.overall-sim-value.bad{color:var(--clr-bad)}.overall-sim-hint{color:#0284c7;opacity:.75;font-size:.82rem;font-style:italic}.overall-sim-count{color:#0284c7;font-weight:600}.btn-sim-toggle{color:#0284c7;cursor:pointer;font-size:.82rem;font-weight:600;font-family:var(--font);white-space:nowrap;background:#0ea5e91a;border:1.5px solid #7dd3fc;border-radius:20px;padding:5px 14px;transition:background .15s,border-color .15s,color .15s}.btn-sim-toggle:hover{background:#0ea5e92e;border-color:#38bdf8}.btn-sim-toggle.active{color:#fff;background:#0ea5e9;border-color:#0ea5e9}.btn-sim-toggle.active:hover{background:#0284c7;border-color:#0284c7}.average-badge.sim-badge{color:#0369a1;background:#e0f2fe;border:2px dashed #38bdf8;font-size:.92rem}.upgrade-badge{vertical-align:middle;cursor:default;border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;margin-left:7px;font-size:.8rem;font-weight:800;line-height:1;display:inline-flex;position:relative}.upgrade-badge-notif{color:#fff;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;font-size:.6rem;font-weight:800;line-height:1;display:flex;position:absolute;top:-7px;right:-7px}.upgrade-badge.effort-1{color:#16a34a;background:#dcfce7;border:1.5px solid #86efac}.upgrade-badge.effort-1 .upgrade-badge-notif{background:#22c55e}.upgrade-badge.effort-2{color:#b45309;background:#fef3c7;border:1.5px solid #fcd34d}.upgrade-badge.effort-2 .upgrade-badge-notif{background:#f59e0b}.upgrade-badge.effort-3{color:#b91c1c;background:#fee2e2;border:1.5px solid #fca5a5}.upgrade-badge.effort-3 .upgrade-badge-notif{background:#ef4444}.add-subject-form{flex-wrap:wrap;align-items:flex-start;gap:10px;display:flex}.add-subject-input{border:2px solid var(--clr-border);border-radius:var(--radius-sm);min-width:220px;font-size:1rem;font-family:var(--font);background:var(--clr-card);outline:none;flex:1;padding:13px 16px;transition:border-color .15s,box-shadow .15s}.add-subject-input:focus{border-color:var(--clr-primary);box-shadow:0 0 0 3px #6c63ff26}.btn{border-radius:var(--radius-sm);cursor:pointer;font-size:1rem;font-family:var(--font);white-space:nowrap;border:none;min-height:44px;padding:12px 20px;font-weight:600;transition:background .15s,transform .1s,box-shadow .15s}.btn:active{transform:scale(.97)}.btn:disabled{cursor:not-allowed;opacity:.5}.btn:disabled:active{transform:none}.btn-primary{background:var(--clr-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--clr-primary-dark);box-shadow:0 4px 12px #6c63ff59}.btn-small{background:var(--clr-primary);color:#fff;min-height:40px;padding:9px 16px;font-size:.9rem}.btn-small:hover:not(:disabled){background:var(--clr-primary-dark)}.btn-ghost{color:var(--clr-text-light);border:1px solid var(--clr-border);background:0 0;min-height:36px;padding:6px 12px;font-size:.82rem}.btn-ghost:hover{background:var(--clr-bad-bg);color:var(--clr-bad);border-color:var(--clr-bad)}.btn-danger-small{background:var(--clr-bad);color:#fff;min-height:36px;padding:6px 14px;font-size:.85rem}.btn-danger-small:hover{background:#dc2626}.btn-cancel{color:var(--clr-text);background:#e5e7eb;min-height:36px;padding:6px 14px;font-size:.85rem}.btn-cancel:hover{background:#d1d5db}.form-error{color:var(--clr-bad);width:100%;margin-top:4px;font-size:.83rem;font-weight:500}.list-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.list-controls-label{color:var(--clr-text-light);font-size:.88rem;font-weight:600}.list-controls-buttons{gap:8px;display:flex}.sort-controls{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.sort-label{color:var(--clr-text-light);white-space:nowrap;font-size:.82rem;font-weight:600}.btn-group{display:inline-flex}.btn-group>.btn{z-index:0;border-radius:0;position:relative}.btn-group>.btn:not(:first-child){margin-left:-1.5px}.btn-group>.btn:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.btn-group>.btn:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.btn-group>.btn:hover,.btn-group>.btn:focus{z-index:1}.btn-group>.btn.btn-sort--active{z-index:2}.btn-sort{background:var(--clr-card);color:var(--clr-text-light);border:1.5px solid var(--clr-border);border-radius:var(--radius-sm);align-items:center;gap:4px;min-height:34px;padding:6px 12px;font-size:.82rem;display:flex}.btn-sort:hover:not(:disabled){border-color:var(--clr-primary);color:var(--clr-primary)}.btn-sort--active{background:var(--clr-primary);color:#fff;border-color:var(--clr-primary)}.btn-sort--active:hover:not(:disabled){background:var(--clr-primary-dark);color:#fff;border-color:var(--clr-primary-dark)}.sort-arrow{font-size:.85rem;line-height:1}.btn-collapse-all{background:var(--clr-card);color:var(--clr-text);border:1.5px solid var(--clr-border);border-radius:var(--radius-sm);min-height:36px;padding:7px 14px;font-size:.82rem}.btn-collapse-all:hover:not(:disabled){border-color:var(--clr-primary);color:var(--clr-primary)}.btn-collapse-all:disabled{opacity:.35;cursor:not-allowed}.btn-collapse-all:disabled:active{transform:none}.subject-grid{grid-template-columns:repeat(2,1fr);align-items:start;gap:14px;display:grid}@media (width<=768px){.subject-grid{grid-template-columns:1fr}}.subject-card{background:var(--clr-card);border-radius:var(--radius);box-shadow:var(--shadow);border:2px solid var(--clr-border);border-left:5px solid var(--clr-border);flex-direction:column;gap:14px;padding:20px;transition:box-shadow .2s,transform .15s;display:flex}.subject-card:hover{box-shadow:var(--shadow-hover)}.subject-card.good{border-left-color:var(--clr-good)}.subject-card.ok{border-left-color:var(--clr-ok)}.subject-card.bad{border-left-color:var(--clr-bad)}.subject-card.collapsed{gap:0}.subject-card-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.subject-name{cursor:default;color:var(--clr-text);flex:1;font-size:1.05rem;font-weight:700;transition:color .15s}.subject-name.editable{cursor:pointer}.subject-name.editable:hover{color:var(--clr-primary)}.subject-name-input{border:2px solid var(--clr-primary);font-size:1.05rem;font-weight:700;font-family:var(--font);border-radius:6px;outline:none;flex:1;padding:4px 10px;box-shadow:0 0 0 3px #6c63ff26}.subject-header-right{flex-shrink:0;align-items:center;gap:8px;display:flex}.grade-count-badge{color:var(--clr-text-light);background:#e5e7eb;border-radius:20px;flex-shrink:0;padding:4px 10px;font-size:.75rem;font-weight:600}.average-badge{text-align:center;border-radius:20px;flex-shrink:0;min-width:52px;padding:6px 12px;font-size:1.05rem;font-weight:800}.average-badge.good{background:var(--clr-good-bg);color:#15803d;border:2px solid var(--clr-good-bg)}.average-badge.ok{background:var(--clr-ok-bg);color:#b45309;border:2px solid var(--clr-ok-bg)}.average-badge.bad{background:var(--clr-bad-bg);color:#b91c1c;border:2px solid var(--clr-bad-bg)}.average-badge.no-grade{color:var(--clr-text-light);background:#f3f4f6;border:2px solid #f3f4f6}.btn-chevron{cursor:pointer;color:var(--clr-text-light);background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;min-width:28px;min-height:28px;padding:4px 6px;font-size:.72rem;transition:background .1s,color .1s;display:flex}.btn-chevron:hover{color:var(--clr-primary);background:#f3f4f6}.teacher-row{align-items:center;gap:7px;margin-bottom:2px;display:flex}.teacher-icon{opacity:.5;flex-shrink:0;font-size:.85rem}.teacher-input{font-size:.82rem;font-family:var(--font);color:var(--clr-text-light);background:0 0;border:none;border-bottom:1.5px dashed #0000;border-radius:0;outline:none;flex:1;min-width:0;padding:2px 4px;transition:border-color .15s,color .15s}.teacher-input::placeholder{color:var(--clr-text-light);opacity:.45;font-style:italic}.teacher-input:hover{border-bottom-color:var(--clr-border)}.teacher-input:focus{border-bottom-color:var(--clr-primary);color:var(--clr-text)}.grades-row{flex-wrap:wrap;align-items:center;gap:7px;min-height:36px;display:flex}.no-grades-text{color:var(--clr-text-light);font-size:.85rem;font-style:italic}.grade-chip{-webkit-user-select:none;user-select:none;border-radius:20px;align-items:center;gap:3px;padding:5px 10px;font-size:.95rem;font-weight:700;transition:transform .1s,box-shadow .1s;display:inline-flex}.grade-chip:hover{transform:scale(1.12);box-shadow:0 2px 8px #00000026}.grade-chip.good{background:var(--clr-good-bg);color:#15803d;border:2px solid var(--clr-good-bg)}.grade-chip.ok{background:var(--clr-ok-bg);color:#b45309;border:2px solid var(--clr-ok-bg)}.grade-chip.bad{background:var(--clr-bad-bg);color:#b91c1c;border:2px solid var(--clr-bad-bg)}.grade-ten{border:2px solid #16a34a!important}.grade-chip.confirming{background:var(--clr-bad-bg);color:#b91c1c;outline:2px solid #fca5a5}.grade-chip-delete{cursor:pointer;opacity:.45;color:inherit;background:0 0;border:none;align-items:center;min-width:16px;min-height:16px;padding:0 0 0 2px;font-size:1.1rem;line-height:1;transition:opacity .1s,color .15s;display:flex}.grade-chip-delete:hover{opacity:1}.grade-chip.confirming .grade-chip-delete{opacity:1;color:#16a34a;font-size:.9rem;font-weight:700}.add-grade-form{flex-wrap:wrap;align-items:flex-start;gap:8px;display:flex}.add-grade-input{border:2px solid var(--clr-border);border-radius:var(--radius-sm);width:130px;font-size:.95rem;font-family:var(--font);outline:none;padding:9px 12px;transition:border-color .15s}.add-grade-input:focus{border-color:var(--clr-primary);box-shadow:0 0 0 3px #6c63ff1f}.smart-hint{border-top:1px solid var(--clr-border);padding-top:12px}.sim-grade-picker{flex-wrap:wrap;gap:clamp(3px,11.1111vw - 43.8889px,11px);margin-bottom:8px;display:flex}.sim-grade-btn{cursor:pointer;border:none;border-radius:50%;width:32px;height:32px;font-size:.95rem;font-weight:700;transition:transform .1s,box-shadow .1s}.sim-grade-btn:hover{transform:scale(1.15);box-shadow:0 2px 8px #0003}.sim-grade-btn.grade-color-bad{background:var(--clr-bad-bg);color:#b91c1c;border:2px solid var(--clr-bad-bg)}.sim-grade-btn.grade-color-ok{background:var(--clr-ok-bg);color:#854d0e;border:2px solid var(--clr-ok-bg)}.sim-grade-btn.grade-color-good{background:var(--clr-good-bg);color:#166534;border:2px solid var(--clr-good-bg)}.sim-grades-chips{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.sim-grade-chip{color:#0369a1;background:#e0f2fe;border:2px dashed #38bdf8;border-radius:999px;align-items:center;gap:4px;padding:2px 8px 2px 10px;font-size:.92rem;font-weight:600;transition:transform .1s,box-shadow .1s;display:inline-flex}.sim-grade-chip:hover{transform:scale(1.12);box-shadow:0 2px 8px #00000026}.sim-grade-chip-delete{cursor:pointer;color:#0369a1;background:0 0;border:none;padding:0 2px;font-size:1rem;line-height:1}.sim-grade-chip-delete:hover{color:#b91c1c}.sim-result{color:#334155;margin:2px 0 0;font-size:.92rem}.sim-delta-pos{color:#16a34a;font-weight:700}.sim-delta-neg{color:#dc2626;font-weight:700}.sim-hint-empty{color:#94a3b8;margin:4px 0 0;font-size:.88rem;font-style:italic}.sim-upgrade-hint{color:#0369a1;border-radius:var(--radius-sm);background:#f0f9ff;border:1px solid #bae6fd;align-items:center;gap:8px;margin:4px 0 0;padding:6px 10px;font-size:.88rem;display:flex}.sim-upgrade-hint .upgrade-badge{flex-shrink:0;margin-left:0;animation:2.4s ease-in-out .4s infinite hint-pulse}.sim-hint-bulb{animation:2.4s ease-in-out infinite hint-pulse;display:inline-block}@keyframes hint-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.75;transform:scale(1.25)}}.subject-card-footer{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.confirm-text{color:var(--clr-bad);font-size:.85rem;font-weight:600}.empty-state{text-align:center;color:var(--clr-text-light);background:var(--clr-card);border-radius:var(--radius);box-shadow:var(--shadow);border:2px dashed var(--clr-border);padding:56px 24px}.empty-state p{font-size:1.05rem}.bottom-bar{flex-wrap:wrap;align-items:flex-start;gap:12px;display:flex}.bottom-bar .add-subject-form{flex:1;min-width:220px}.data-controls{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.btn-defaults{color:#fff;background:#7c3aed;padding:12px 18px}.btn-defaults:hover:not(:disabled){background:#6d28d9;box-shadow:0 4px 12px #7c3aed59}.btn-import{color:#fff;background:#059669;padding:12px 18px}.btn-import:hover:not(:disabled){background:#047857;box-shadow:inset 0 0 0 999px #0000000f}.btn-export{color:#fff;background:#1d4ed8;padding:12px 18px}.btn-export:hover:not(:disabled){background:#1e40af;box-shadow:inset 0 0 0 999px #0000000f}.btn-export:disabled{opacity:.45;cursor:not-allowed}.btn-group>.btn-import+.btn-export,.btn-group>.btn-export+.btn-import{border-left-color:#ffffff40}.import-status{text-align:right;width:100%;padding:4px 0 0;font-size:.88rem;font-weight:600}.import-status--success{color:var(--clr-good)}.import-status--error{color:var(--clr-bad)}@keyframes grade-toast-in-up{0%{opacity:0;transform:translateY(50px)scale(.88)}55%{opacity:1;transform:translateY(-8px)scale(1.03)}75%{transform:translateY(4px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes grade-toast-in-down{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes grade-toast-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(24px)}}@keyframes grade-toast-glow{0%,to{box-shadow:0 4px 24px #15803d2e}50%{box-shadow:0 4px 32px #15803d73,0 0 0 5px #15803d14}}.grade-toast{z-index:500;text-align:center;pointer-events:none;border-radius:14px;width:fit-content;max-width:min(420px,100vw - 32px);margin:0 auto;padding:14px 22px;font-size:.92rem;font-weight:600;line-height:1.45;animation-name:grade-toast-in-down;animation-duration:.4s;animation-timing-function:ease-out;animation-fill-mode:both;position:fixed;bottom:28px;left:0;right:0}.grade-toast--up{color:#15803d;background:#dcfce7;border:1.5px solid #86efac;animation-name:grade-toast-in-up;animation-duration:.5s;animation-timing-function:cubic-bezier(.34,1.56,.64,1);box-shadow:0 4px 24px #15803d2e}.grade-toast--up:not(.grade-toast--leaving){animation:.5s cubic-bezier(.34,1.56,.64,1) grade-toast-in-up,1.4s ease-in-out .5s 2 grade-toast-glow}.grade-toast--down{color:#c2410c;background:#fff7ed;border:1.5px solid #fdba74;box-shadow:0 4px 20px #c2410c1f}.grade-toast--leaving{animation-name:grade-toast-out!important;animation-duration:.5s!important;animation-timing-function:ease-in!important;animation-fill-mode:forwards!important}.toast{text-align:right;color:#15803d;background:var(--clr-good-bg);border-radius:var(--radius-sm);border:1px solid #bbf7d0;padding:10px 16px;font-size:.88rem;font-weight:600}.modal-overlay{z-index:200;background:#00000073;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--clr-card);border-radius:var(--radius);width:100%;max-width:380px;padding:28px 24px 20px;box-shadow:0 20px 60px #00000040}.modal-title{text-align:center;margin-bottom:8px;font-size:1.3rem;font-weight:800}.modal-subtitle{color:var(--clr-text-light);text-align:center;margin-bottom:20px;font-size:.85rem;line-height:1.5}.modal-section{margin-bottom:14px}.modal-section-label{text-transform:uppercase;letter-spacing:.07em;color:var(--clr-text-light);margin-bottom:6px;font-size:.72rem;font-weight:700;display:block}.class-row{gap:6px;display:flex}.btn-class{border:2px solid var(--clr-border);background:var(--clr-bg);border-radius:var(--radius-sm);cursor:pointer;font-size:1.05rem;font-weight:700;font-family:var(--font);flex:1;min-height:44px;padding:10px 4px;transition:background .12s,border-color .12s,color .12s}.btn-class:hover{background:var(--clr-primary);color:#fff;border-color:var(--clr-primary)}.modal-close-btn{width:100%;margin-top:8px}@media (width<=480px){.header h1{font-size:1.3rem}.overall-value{font-size:3rem}.main{gap:12px;padding:12px 10px 32px}.subject-card{padding:8px}.subject-grid{gap:10px}.add-subject-form{flex-direction:column}.add-subject-input{min-width:unset;width:100%}.btn-primary{justify-content:center;width:100%}}
