.wordmark{display:inline;letter-spacing:-.01em}.wordmark-ink{font-weight:400;color:inherit;opacity:.65}.wordmark-grad{font-weight:700;color:inherit}.layout{min-height:100vh;display:flex;flex-direction:column}.layout>main{flex:1}.site-footer{text-align:center;padding:1.5rem 1rem;font-size:.8rem;color:var(--color-text-secondary)}.site-footer a{color:var(--color-text-secondary);text-decoration:none}.site-footer a:hover{color:var(--color-primary)}.navbar{background:var(--color-surface);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:100}.navbar-inner{max-width:960px;margin:0 auto;display:flex;align-items:center;padding:0 1rem;height:56px;gap:1.5rem}.navbar-brand{font-size:1.25rem;font-weight:700;color:var(--color-primary);text-decoration:none;letter-spacing:-.02em;display:flex;align-items:center;gap:.5rem}.navbar-logo{height:32px;width:auto}.navbar-brand:hover{text-decoration:none}.navbar-links{display:flex;gap:.25rem;flex:1}.nav-link{padding:.35rem .75rem;border-radius:var(--radius);font-size:.875rem;font-weight:500;color:var(--color-text-secondary);text-decoration:none;transition:background .15s,color .15s}.nav-link:hover{background:var(--color-bg);color:var(--color-text);text-decoration:none}.nav-link.active{background:var(--color-primary-light);color:var(--color-primary)}.navbar-avatar{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;color:var(--color-text-secondary);text-decoration:none;transition:background .15s,color .15s}.navbar-avatar:hover{background:var(--color-bg);color:var(--color-text);text-decoration:none}.navbar-avatar.active{background:var(--color-primary-light);color:var(--color-primary)}@media(max-width:640px){.navbar-inner{flex-wrap:wrap;height:auto;padding:.5rem .75rem;gap:.5rem}.navbar-links{order:3;width:100%;overflow-x:auto;padding-bottom:.25rem}}.upload-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 2rem;border:2px dashed var(--color-border);border-radius:var(--radius);cursor:pointer;transition:border-color .15s,background .15s;margin-bottom:2rem;text-align:center}.upload-zone-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.upload-zone:hover,.upload-zone:focus-within{border-color:var(--color-primary);background:var(--color-primary-light)}.upload-zone.drag-active{border-color:var(--color-primary);background:var(--color-primary-light)}.upload-text{font-weight:600;font-size:.95rem;margin-bottom:.25rem}.upload-hint{font-size:.8rem;color:var(--color-text-secondary)}.upload-tips{margin:.75rem 0 0;padding:0;font-size:.8rem;color:var(--color-text-secondary)}.upload-tips strong{color:var(--color-text)}.upload-guide-link{font-weight:600;white-space:nowrap}.dialog-overlay{position:fixed;inset:0;z-index:1000;background:#0f172a73;display:flex;align-items:center;justify-content:center;padding:1rem}.dialog-box{width:100%;max-width:430px;box-shadow:var(--shadow-md)}.dialog-box h3{margin-bottom:.75rem}.dialog-box p{margin-bottom:.75rem;font-size:.9375rem}.dialog-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1.25rem}.flow-diagram{display:flex;flex-wrap:nowrap;align-items:flex-start;justify-content:center;max-width:780px;margin:0 auto}.flow-group{display:flex;align-items:flex-start}.flow-step{display:flex;flex-direction:column;align-items:center;width:122px;text-align:center}.flow-badge{width:88px;height:88px;box-sizing:border-box;padding:12px;border-radius:50%;background:var(--color-primary-light);border:2px solid #bfdbfe;display:flex;align-items:center;justify-content:center}.flow-icon{width:100%;height:100%;display:block}.flow-label{margin-top:.6rem;font-weight:700;font-size:.95rem;color:var(--color-text)}.flow-arrow{height:88px;display:flex;align-items:center;font-size:1.6rem;font-weight:700;color:var(--color-primary);padding:0 .1rem}.flow-circle{position:relative;width:100%;max-width:460px;aspect-ratio:1 / 1;margin:0 auto}.flow-circle-arcs{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.flow-circle .flow-arc{fill:none;stroke:var(--color-border);stroke-width:.9}.flow-circle .flow-arrowhead{fill:var(--color-primary)}.flow-circle-step{position:absolute;transform:translate(-50%,-50%)}.flow-circle-step .flow-label{position:absolute;top:calc(100% + 2px);left:50%;transform:translate(-50%);white-space:nowrap;margin-top:0}@media(max-width:720px){.flow-diagram,.flow-group{flex-direction:column;align-items:center}.flow-arrow{height:auto;transform:rotate(90deg);padding:.4rem 0}}.class-home-list{display:flex;flex-direction:column;gap:1rem}.class-home-card{padding:1rem 1.1rem}.class-home-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.6rem}.class-home-toggle{appearance:none;background:none;border:none;padding:0;font:inherit;font-size:1.05rem;font-weight:700;cursor:pointer;color:var(--color-text)}.class-home-count{font-weight:400;font-size:.85rem}.class-home-actions{display:flex;align-items:center;gap:.5rem}.class-home-progress{font-size:.85rem}.class-home-hint{margin:.4rem 0 0;font-size:.82rem}.class-home-students{list-style:none;margin:.75rem 0 0;padding:0}.class-home-student{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.35rem 0;border-top:1px solid var(--color-border)}.class-home-student-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;min-width:0}.class-home-student-name{font-weight:500}.class-goal-chip{font-size:.75rem;font-weight:600;padding:.12rem .5rem;border-radius:999px;white-space:nowrap}.class-goal-chip.active{background:var(--color-primary-light, #e8f0fe);color:var(--color-primary)}.class-goal-chip.done{background:#e3f4e3;color:#1e6f2f}.class-goal-chip.none{background:var(--color-surface-2, #f1f3f4);color:var(--color-text-secondary)}.class-home-pending{margin-top:.75rem;padding-top:.6rem;border-top:1px solid var(--color-border)}.class-home-pending-label{font-size:.8rem;font-weight:600;color:var(--color-text-secondary)}.class-home-pending ul{list-style:none;margin:.35rem 0 0;padding:0}.class-home-pending li{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.3rem 0;font-size:.88rem}.class-home-bundle-title{display:flex;align-items:center;gap:.5rem;min-width:0}.class-bundle-chip{font-size:.72rem;font-weight:600;padding:.1rem .45rem;border-radius:999px;white-space:nowrap;background:var(--color-surface-2, #f1f3f4);color:var(--color-text-secondary)}.class-bundle-chip.done{background:#e3f4e3;color:#1e6f2f}.home-onboarding{margin-bottom:1.5rem;border-left:4px solid var(--color-primary)}.home-onboarding h2{font-size:1.1rem;margin-bottom:.5rem}.home-onboarding>.text-secondary{font-size:.9rem;margin-bottom:.5rem}.onboarding-steps{margin:0 0 1rem 1.25rem;padding:0;display:flex;flex-direction:column;gap:.4rem;font-size:.95rem}.home-onboarding .add-student-form{margin:.5rem 0 0;box-shadow:none}.usage-card{margin-bottom:1.5rem}.usage-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.usage-label{font-weight:600;font-size:.9rem}.usage-count{font-size:.85rem;color:var(--color-text-secondary)}.students-home{margin-bottom:1.5rem}.students-home-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.students-home-head h2{font-size:1.1rem;margin:0}.add-student-form{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:1rem;margin-bottom:1rem}.add-student-input{padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.9rem}.add-student-grade{width:14rem}.add-student-fields{display:flex;flex-direction:column;gap:.6rem;flex:1;min-width:16rem}.add-student-label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;color:var(--color-text-secondary)}.add-student-check{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.add-student-disclaimer{font-size:.75rem;margin:0}.add-student-actions{display:flex;gap:.5rem;align-items:flex-start}.home-upload{margin-bottom:1.5rem}.home-upload h2{font-size:1.1rem;margin-bottom:.25rem}.home-upload>.text-secondary{font-size:.85rem;margin-bottom:.75rem}.home-how{margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid var(--color-border)}.home-how h2{font-size:1.1rem;margin-bottom:1.25rem;text-align:center}.adaptive-warning{margin:0 0 .5rem;padding:.5rem .7rem;font-size:.85rem;color:var(--color-text);background:var(--color-warning-bg, #fff8e1);border:1px solid var(--color-warning-border, #f0d98c);border-radius:var(--radius)}.student-box-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1rem}.student-box{display:flex;flex-direction:column;gap:.85rem;padding:1rem 1.1rem}.student-box-head{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem}.student-box-name{font-size:1.05rem;font-weight:700}.student-box-grade{font-size:.8rem}.student-goal-line{margin:-.35rem 0 0;font-size:.82rem}.new-goal-banner{margin:0 0 .6rem;padding:.4rem .65rem;font-size:.875rem;color:#1e6f2f;background:var(--color-success-light);border-radius:var(--radius)}.student-box.goal-flash{animation:goal-flash 1.4s ease-out 2}@keyframes goal-flash{0%{box-shadow:0 0 #2563eb73}to{box-shadow:0 0 0 12px #2563eb00}}.student-generate{display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap;padding-bottom:.85rem;border-bottom:1px solid var(--color-border)}.student-generate-label{font-size:.9rem;font-weight:600}.student-generate-actions{display:flex;gap:.4rem}.rec-empty{font-size:.85rem;margin:.25rem 0 0}.rec-title{font-weight:500}.rec-preparing{font-size:.8rem}.rec-result{font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}.rec-result.rec-good{background:#e3f4e3;color:#1e6f2f;border:1px solid #bfe3bf}.rec-result.rec-mid{background:#fdf3dc;color:#8a6116;border:1px solid #ecd9a6}.rec-result.rec-low{background:#fbe4e4;color:#a13030;border:1px solid #eec2c2}.rec-result:hover{text-decoration:none;filter:brightness(.97)}.student-box-rec-label{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);margin-bottom:.4rem}.rec-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.rec-item{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.rec-label{display:flex;flex-direction:column;font-size:.9rem}.rec-subs{font-size:.8rem;color:var(--color-text-secondary)}.rec-actions{display:flex;gap:.4rem;flex-shrink:0}.goal-card{padding:1rem 1.25rem}.goal-card+.goal-card{margin-top:.75rem}.goal-card-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.75rem;margin-bottom:.5rem}.goal-status{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:.15rem .5rem;border-radius:999px}.goal-status-active{background:var(--color-primary-light, #e8f0fe);color:var(--color-primary, #1a73e8)}.goal-status-completed{background:#e3f4e3;color:#1e6f2f}.goal-status-replaced{background:var(--color-surface-2, #f1f3f4);color:var(--color-text-secondary, #5f6368)}.goal-target,.goal-progress-count{font-size:.9rem}.goal-dates{margin-left:auto;font-size:.8rem}.goal-topics{list-style:none;margin:0;padding:0}.goal-topic{display:flex;align-items:center;gap:.6rem;padding:.45rem 0;border-top:1px solid var(--color-border, #e0e0e0)}.goal-topic-check{width:1.1rem;text-align:center;color:#1e8e3e;font-weight:700}.goal-topic-info{display:flex;flex-direction:column;gap:.1rem;min-width:0;flex:1}.goal-topic-name{font-weight:500}.goal-topic.is-done .goal-topic-name{color:var(--color-text-secondary, #5f6368)}.goal-topic-reason{font-size:.8rem}.goal-topic-standing{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.goal-topic-skills{font-size:.75rem;white-space:nowrap}.goal-grade{display:inline-block;min-width:2rem;text-align:center;font-weight:700;font-size:.85rem;padding:.1rem .4rem;border-radius:6px}.goal-grade-good{background:#e3f4e3;color:#1e6f2f}.goal-grade-mid{background:#fdf3dc;color:#8a6116}.goal-grade-low{background:#fbe4e4;color:#a13030}.goal-grade-none{background:var(--color-surface-2, #f1f3f4);color:var(--color-text-secondary, #5f6368)}.subtabs{display:flex;gap:.25rem;border-bottom:1px solid var(--color-border);margin-bottom:1rem}.subtab{background:none;border:none;padding:.6rem 1rem;font:inherit;font-size:.9rem;color:var(--color-text-secondary);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.subtab:hover{color:var(--color-text)}.subtab.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.recent-work{margin-top:1rem}.recent-work h2{font-size:1.1rem;margin-bottom:1rem}.clickable-row{cursor:pointer}.clickable-row:hover{background:var(--color-primary-light)}.chevron{display:inline-block;width:1rem;margin-right:.4rem;color:var(--color-text-secondary);font-weight:600;transition:transform .15s;transform-origin:50% 55%}.chevron-open{transform:rotate(90deg)}.tasks-row td{padding:.5rem 1rem;background:#f8fafc}.tasks-detail{display:flex;flex-wrap:wrap;gap:.75rem}.task-result{display:inline-flex;align-items:center;gap:.25rem;font-size:.85rem}.task-icon{font-weight:700;font-size:1rem}.task-pass{color:#16a34a}.task-fail{color:#dc2626}.task-number{color:var(--color-text-secondary);font-size:.8rem}.doc-pages{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.doc-page{display:flex;align-items:center;gap:.75rem;font-size:.85rem}.doc-page-num{font-weight:600;color:var(--color-text-secondary);min-width:4.5rem}.doc-page-link{color:var(--color-primary);text-decoration:none}.doc-page-link:hover{text-decoration:underline}.doc-pages-empty{font-size:.85rem;color:var(--color-text-secondary)}.scores-student-row{display:flex;align-items:center;gap:.6rem;margin-bottom:1rem}.scores-student-row label{font-size:.9rem;color:var(--color-text-secondary)}.scores-student-row select{padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.9rem}.scores-tree{padding:.75rem 1rem;margin-bottom:.75rem}.score-row{display:flex;align-items:center;gap:.5rem;padding:.4rem .25rem;border-radius:var(--radius)}.score-row.branch{cursor:pointer}.score-row.branch:hover{background:#00000009}.score-toggle{width:1rem;flex-shrink:0;color:var(--color-text-secondary);font-size:.8rem}.score-name{flex:1;min-width:0}.score-row.depth-0 .score-name{font-weight:700;font-size:1rem}.score-row.depth-1 .score-name{font-weight:600}.score-row.depth-2 .score-name{font-weight:500}.score-row.depth-3 .score-name{font-size:.9rem;color:var(--color-text-secondary)}.score-children{margin-left:1.25rem;border-left:1px solid var(--color-border);padding-left:.5rem}.score-badge{font-variant-numeric:tabular-nums;font-weight:600;font-size:.85rem;padding:.1rem .5rem;border-radius:999px;flex-shrink:0}.score-good{background:#e3f4e3;color:#1e6f2f}.score-mid{background:#fdf3dc;color:#8a6116}.score-low{background:#fbe4e4;color:#a13030}.scores-hint{font-size:.8rem}.details-tabs{display:flex;gap:1.25rem;margin-bottom:1.5rem;border-bottom:2px solid var(--color-border)}.details-tab{appearance:none;background:none;border:none;padding:.5rem .25rem;margin-bottom:-2px;font:inherit;font-size:1rem;font-weight:600;color:var(--color-text-secondary);border-bottom:2px solid transparent;cursor:pointer}.details-tab:hover{color:var(--color-text)}.details-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.details-student-row{display:flex;align-items:center;gap:.6rem;margin-bottom:1.5rem}.details-student-row label{font-size:.9rem;color:var(--color-text-secondary)}.details-student-row select{padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.9rem}.details-section{padding-top:1.5rem;margin-top:1.5rem;border-top:1px solid var(--color-border)}.details-section:first-of-type{padding-top:0;margin-top:0;border-top:none}.details-heading{font-size:1.1rem;margin:0 0 .75rem}.details-goal-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.details-goal-head .details-heading{margin-bottom:0}.goal-page h1{margin-bottom:1rem}.goal-student-row{display:flex;align-items:center;gap:.6rem;margin-bottom:1.25rem}.goal-student-row label{font-weight:600}.goal-student-row select{padding:.4rem .6rem;border:1px solid var(--color-border, #e0e0e0);border-radius:var(--radius, 8px);font-size:.95rem}.goal-section{margin-bottom:1.75rem}.goal-heading{font-size:1.1rem;margin-bottom:.6rem}.goal-hint{margin-top:.5rem;font-size:.85rem}.goal-change-row{margin-bottom:1.75rem}.goal-setup-context{margin-bottom:.6rem;font-size:.9rem}.goal-student-facts{display:flex;flex-direction:column;gap:.5rem;max-width:640px;margin-bottom:.9rem}.goal-fact{display:flex;align-items:center;gap:.5rem;font-size:.9rem;font-weight:600}.goal-fact-input{padding:.35rem .55rem;border:1px solid var(--color-border, #e0e0e0);border-radius:var(--radius, 8px);font:inherit;font-weight:400}.goal-fact-grade{width:7rem}.goal-fact-check{font-weight:400}.goal-suggest-form{display:flex;flex-direction:column;gap:.6rem;align-items:flex-start}.goal-suggest-input{width:100%;max-width:640px;padding:.6rem .75rem;border:1px solid var(--color-border, #e0e0e0);border-radius:var(--radius, 8px);font:inherit;resize:vertical}.goal-suggested{margin-top:1rem}.goal-suggested-heading{font-size:.95rem;margin-bottom:.5rem}.goal-suggested-list{list-style:none;margin:0 0 1rem;padding:0;max-width:640px}.goal-suggested-topic+.goal-suggested-topic{border-top:1px solid var(--color-border, #e0e0e0)}.goal-suggested-label{display:flex;align-items:flex-start;gap:.6rem;padding:.5rem 0;cursor:pointer}.goal-suggested-label input{margin-top:.25rem}.goal-suggested-info{display:flex;flex-direction:column;gap:.15rem}.goal-suggested-name{font-weight:500}.goal-suggested-meta{font-weight:400;font-size:.8rem}.goal-suggested-reason{font-size:.85rem}.goal-target-row{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem}.goal-target-label{font-weight:600;font-size:.9rem}.goal-target-options{display:flex;gap:.4rem}.goal-target-option{padding:.3rem .8rem;border:1px solid var(--color-border, #e0e0e0);border-radius:999px;font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none}.goal-target-option input{position:absolute;opacity:0;pointer-events:none}.goal-target-option.is-selected{background:var(--color-primary, #1a73e8);border-color:var(--color-primary, #1a73e8);color:#fff}.goal-confirm-row{display:flex;gap:.6rem}.goal-class-students{list-style:none;margin:0;padding:0;max-width:640px}.goal-class-students li+li{border-top:1px solid var(--color-border, #e0e0e0)}.goal-class-student-label{display:flex;align-items:center;gap:.5rem;padding:.4rem 0;cursor:pointer}.classes-page h1{margin-bottom:1rem}.classes-create-row{display:flex;gap:.5rem;margin-bottom:1.25rem;max-width:480px}.classes-create-row input{flex:1;padding:.45rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);font:inherit}.classes-class{padding:1rem 1.25rem;margin-bottom:1rem}.classes-class-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.6rem}.classes-class-name{font-size:1.05rem;margin:0}.classes-count{font-weight:400;font-size:.85rem}.classes-class-actions,.classes-rename{display:flex;gap:.4rem;align-items:center}.classes-rename input{padding:.35rem .55rem;border:1px solid var(--color-border);border-radius:var(--radius);font:inherit}.classes-students{list-style:none;margin:.6rem 0 0;padding:0}.classes-student-row{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.45rem 0;border-top:1px solid var(--color-border)}.classes-student-name{font-weight:500;min-width:0}.classes-student-meta{font-weight:400;font-size:.8rem}.classes-student-actions{display:flex;gap:.4rem;align-items:center;flex-shrink:0}.classes-student-actions select{padding:.3rem .45rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.85rem}.classes-delete-btn{color:#a13030}.classes-empty{margin:.6rem 0 0;font-size:.85rem}.classes-add-student{display:flex;flex-direction:column;gap:.5rem;padding:.9rem 1rem;margin-top:.75rem;max-width:480px}.classes-add-student input[type=text],.classes-add-student select{padding:.45rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);font:inherit}.classes-add-student label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;font-weight:600}.classes-add-student .classes-check{flex-direction:row;align-items:center;gap:.45rem;font-weight:400}.classes-form-actions{display:flex;gap:.5rem;margin-top:.25rem}.admin-table{width:100%;border-collapse:collapse;background:var(--color-surface, #fff);border:1px solid var(--color-border);border-radius:var(--radius);font-size:.9rem}.admin-table th{text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);padding:.6rem .9rem;border-bottom:1px solid var(--color-border)}.admin-table td{padding:.6rem .9rem;border-bottom:1px solid var(--color-border);vertical-align:middle;font-variant-numeric:tabular-nums}.admin-table tr:last-child td{border-bottom:none}.admin-metric-name{font-weight:600}.admin-row-group td{border-top:2px solid var(--color-border)}.admin-metric-total{font-weight:700}.admin-hint{font-size:.8rem;margin-top:.5rem}.admin-contact{margin-top:2.5rem}.admin-contact h2{font-size:1.1rem;margin-bottom:.75rem}.admin-contact-list{margin:0;padding-left:1.5rem;display:flex;flex-direction:column;gap:.6rem}.admin-contact-item{padding-left:.25rem}.admin-contact-head{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem}.admin-contact-email{font-weight:600;font-size:.9rem}.admin-contact-date{font-size:.8rem;color:var(--color-text-secondary);white-space:nowrap}.admin-contact-message{margin:.15rem 0 0;font-size:.9rem;white-space:pre-wrap;overflow-wrap:anywhere}.students-manager{margin-top:1.5rem}.students-manager-title{margin:0 0 .25rem}.students-manager-hint{font-size:.85rem;margin-bottom:1rem}.students-list{list-style:none;padding:0;margin:0 0 1rem}.students-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.6rem 0;border-bottom:1px solid var(--color-border)}.students-row:last-child{border-bottom:none}.students-name{display:inline-flex;align-items:center;gap:.5rem;font-weight:500}.students-actions{display:inline-flex;gap:.4rem}.students-edit,.students-add{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.students-add{margin-top:.25rem}.students-input{padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.9rem;flex:1 1 8rem;min-width:8rem}.students-input:focus{outline:none;border-color:var(--color-primary)}.students-delete-btn{color:#a13030}.plans-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.25rem;margin-top:1.5rem}.plan-card{display:flex;flex-direction:column;align-items:center;text-align:center;padding:2rem 1.5rem;transition:box-shadow .15s,border-color .15s}.plan-highlight{border-color:var(--color-primary);box-shadow:var(--shadow-md)}.plan-current{border-color:var(--color-success)}.plan-name{font-size:1.25rem;font-weight:700;margin-bottom:.5rem}.plan-price{font-size:1.75rem;font-weight:700;margin-bottom:.25rem}.plan-price-interval{font-size:.875rem;font-weight:400;color:var(--color-text-secondary)}.plan-price-tax{font-size:.75rem;font-weight:400;color:var(--color-text-secondary)}.plan-description{font-size:.875rem;color:var(--color-text-secondary);margin-bottom:1.5rem}.plan-btn{width:100%}.plan-badge{margin-top:auto}.current-plan-card{margin-bottom:1.5rem;text-align:center;padding:1.5rem}.current-plan-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);margin-bottom:.25rem}.current-plan-name{font-size:1.5rem;font-weight:700;margin-bottom:.5rem}.current-plan-status{font-size:.875rem}.free-plan-note{margin-bottom:1.5rem;padding:1rem 1.25rem;font-size:.9rem;line-height:1.5;color:var(--color-text-secondary)}.hero-slider{position:relative;display:flex;align-items:center;justify-content:center;min-height:120px;padding:2rem 3rem;margin-bottom:2rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.slider-content{text-align:center;flex:1;min-height:60px;display:flex;align-items:center;justify-content:center}.slider-text{font-size:1.25rem;line-height:1.6;color:var(--color-text);font-weight:500;margin:0;animation:slideIn .4s ease-out}@keyframes slideIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.slider-arrow{position:absolute;top:50%;transform:translateY(-50%);background:none;border:none;font-size:2rem;color:var(--color-text-secondary);cursor:pointer;padding:.25rem .5rem;line-height:1;transition:color .2s;z-index:1}.slider-arrow:hover{color:var(--color-primary)}.slider-arrow-left{left:.5rem}.slider-arrow-right{right:.5rem}.slider-dots{position:absolute;bottom:.75rem;left:50%;transform:translate(-50%);display:flex;gap:.5rem}.slider-dot{width:8px;height:8px;border-radius:50%;border:none;background:var(--color-border);cursor:pointer;padding:0;transition:background .2s}.slider-dot.active{background:var(--color-primary)}@media(max-width:640px){.hero-slider{padding:1.5rem 2.5rem;min-height:100px}.slider-text{font-size:1.05rem}.slider-arrow{font-size:1.5rem}}.grade-tabs{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin:1.5rem 0}.grade-tab{display:inline-flex;align-items:center;justify-content:center;min-width:2.25rem;padding:.4rem .7rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface, #fff);color:var(--color-text);font-size:.9rem;font-weight:600;text-decoration:none;transition:background .12s,border-color .12s,color .12s}.grade-tab:hover{border-color:var(--color-primary);color:var(--color-primary);text-decoration:none}.grade-tab.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.welcome-page{max-width:720px;margin:0 auto;padding:2rem 1rem 4rem}.welcome-hero{text-align:center;padding:3rem 0 2rem}.welcome-title{font-size:3rem;font-weight:800;color:var(--color-primary);margin-bottom:.5rem}.welcome-tagline{font-size:1.2rem;color:var(--color-text-secondary)}.welcome-trial{font-size:1rem;color:var(--color-text);margin-top:1rem;font-weight:500}.welcome-how{padding:1rem 0 2rem}.welcome-how h2{text-align:center;margin-bottom:1.5rem}.welcome-why{line-height:1.7;color:var(--color-text);font-size:1.05rem}.welcome-capture{padding:1rem 0 2rem;text-align:center}.welcome-capture h2{margin-bottom:.75rem}.welcome-capture .text-secondary{max-width:560px;margin:0 auto 1.5rem}.capture-guide-img{display:block;width:100%;max-width:420px;height:auto;margin:0 auto}.welcome-cta{text-align:center;padding-top:1rem}.btn-lg{padding:.85rem 2.5rem;font-size:1.1rem}@media(max-width:640px){.welcome-title{font-size:2.2rem}}.adaptive-banner{display:flex;align-items:flex-start;gap:.65rem;margin:0 0 1.5rem;padding:.85rem 1rem;background:var(--color-primary-light, #dbeafe);border:1px solid var(--color-primary, #2563eb);border-radius:var(--radius)}.adaptive-banner-icon{font-size:1.25rem;line-height:1.4}.adaptive-banner p{margin:0;font-size:.92rem;line-height:1.55;color:var(--color-text)}.grade-page{max-width:880px;margin:0 auto}.grade-head h1{margin-bottom:.75rem}.grade-abstract{line-height:1.7;font-size:1.05rem;color:var(--color-text);margin:0 0 .75rem}.grade-topics{margin-top:2rem}.grade-topics h2,.grade-samples h2{font-size:1.2rem;margin-bottom:.75rem}.grade-topic-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.4rem 1rem}.grade-topic-list li{position:relative;padding-left:1.25rem;font-size:.95rem}.grade-topic-list li:before{content:"✓";position:absolute;left:0;color:var(--color-success);font-weight:700}.grade-samples{margin-top:2.5rem}.grade-samples>.text-secondary{font-size:.9rem;margin-bottom:1rem}.grade-page-thumb{float:right;width:230px;max-width:40%;margin:0 0 1.25rem 1.25rem;text-align:center}.grade-page-thumb img{display:block;width:100%;height:auto;border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm, 0 1px 2px rgba(0, 0, 0, .06));background:#fff}.grade-page-thumb figcaption{margin-top:.35rem;font-size:.8rem;color:var(--color-text-secondary)}.grade-shots{display:flex;flex-direction:column;gap:1rem;clear:both}@media(max-width:560px){.grade-page-thumb{float:none;width:200px;max-width:100%;margin:0 auto 1.25rem}}.grade-shot{margin:0;border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm, 0 1px 2px rgba(0, 0, 0, .06));background:#fff}.grade-shot img{display:block;width:100%;height:auto}.grade-cta{margin-top:2.5rem;text-align:center}.grade-cta .text-secondary{margin-top:.5rem;font-size:.85rem}:root{--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-light: #dbeafe;--color-success: #16a34a;--color-success-light: #dcfce7;--color-warning: #ca8a04;--color-warning-light: #fef9c3;--color-danger: #dc2626;--color-danger-light: #fee2e2;--color-bg: #f8fafc;--color-surface: #ffffff;--color-border: #e2e8f0;--color-text: #1e293b;--color-text-secondary: #64748b;--radius: 8px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow: 0 1px 3px rgba(0, 0, 0, .1), 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px rgba(0, 0, 0, .07), 0 2px 4px rgba(0, 0, 0, .06)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--color-bg);color:var(--color-text);line-height:1.6;-webkit-font-smoothing:antialiased}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit}.text-secondary{color:var(--color-text-secondary)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.5rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;border-radius:var(--radius);border:1px solid transparent;font-size:.875rem;font-weight:500;transition:background-color .15s,border-color .15s,box-shadow .15s;white-space:nowrap}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-bg)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:#b91c1c}.btn-sm{padding:.35rem .75rem;font-size:.8rem}.input{padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.875rem;font-family:inherit;outline:none;transition:border-color .15s,box-shadow .15s;width:100%}.input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb26}.badge{display:inline-block;padding:.15rem .5rem;border-radius:9999px;font-size:.75rem;font-weight:600}.badge-success{background:var(--color-success-light);color:var(--color-success)}.badge-warning{background:var(--color-warning-light);color:var(--color-warning)}.badge-danger{background:var(--color-danger-light);color:var(--color-danger)}.badge-neutral{background:#f1f5f9;color:var(--color-text-secondary)}.page{max-width:960px;margin:0 auto;padding:2rem 1rem}.page h1{font-size:1.5rem;font-weight:700;margin-bottom:1.5rem}.loading{display:flex;align-items:center;justify-content:center;padding:3rem;color:var(--color-text-secondary)}.login-card{max-width:24rem;margin:3rem auto;text-align:center}.login-card h2{margin-bottom:.25rem}.login-subtitle{color:var(--color-text-secondary);font-size:.9rem;margin-bottom:1.5rem}.login-providers{display:flex;flex-direction:column;gap:.75rem}.btn-provider{width:100%;padding:.65rem 1rem;font-size:.9rem}.login-divider{display:flex;align-items:center;gap:.75rem;margin:1rem 0;color:var(--color-text-secondary);font-size:.8rem}.login-divider:before,.login-divider:after{content:"";flex:1;border-top:1px solid var(--color-border)}.login-email-link{background:none;border:none;padding:0;color:var(--color-primary);font-size:.875rem}.login-email-link:hover{text-decoration:underline}.login-provider-hint{margin-top:.35rem;font-size:.8rem;line-height:1.4;color:var(--color-text-secondary)}.consent-notice{background:var(--color-warning-light);color:var(--color-warning);border:1px solid #fde68a;border-radius:var(--radius);padding:.875rem 1rem;font-weight:600;margin-bottom:1rem}.consent-actions{position:sticky;bottom:0;display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin:2rem -1.5rem -1.5rem;padding:1rem 1.5rem;background:var(--color-surface);border-top:1px solid var(--color-border);border-radius:0 0 var(--radius) var(--radius)}.consent-actions-hint{flex:1 1 auto;margin-right:auto;font-size:.875rem;color:var(--color-text-secondary)}.error-message{background:var(--color-danger-light);color:var(--color-danger);border:1px solid #fca5a5;border-radius:var(--radius);padding:.75rem 1rem;font-size:.875rem;margin-bottom:1rem}.success-message{background:var(--color-success-light);color:var(--color-success);border:1px solid #86efac;border-radius:var(--radius);padding:.75rem 1rem;font-size:.875rem;margin-bottom:1rem}.profile-label{font-size:.75rem;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.2rem}.profile-value{font-size:1rem}.progress-bar{width:100%;height:8px;background:#e2e8f0;border-radius:4px;overflow:hidden}.progress-bar-fill{height:100%;border-radius:4px;transition:width .3s ease}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.75rem 1rem;border-bottom:1px solid var(--color-border);font-size:.875rem}th{font-weight:600;color:var(--color-text-secondary);background:var(--color-bg)}tr:hover td{background:#f8fafc}@media(max-width:640px){.page{padding:1rem .75rem}.card{padding:1rem}}
