:root{font-family:Inter,"Segoe UI",Arial,sans-serif;color:#15203a;background:#f4f7fe;font-synthesis:none;font-weight:400;font-size:14px;--blue:#1646ff;--blue-dark:#103ce1;--navy:#101a31;--text:#15203a;--muted:#7d879d;--border:#e5ebf6;--shadow:0 3px 12px #172b5910,0 1px 2px #172b5906;--radius:18px}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}a{color:inherit;text-decoration:none}button{color:inherit}button,select,input,textarea{outline-offset:3px}button:focus-visible,a:focus-visible{outline:3px solid #8bb0ff}input:focus,select:focus,textarea:focus{outline:2px solid #afc5ff;border-color:#4f78ff}h1,h2,h3,h4,p{margin:0}h1{font-size:29px;letter-spacing:-1px;line-height:1.25;color:#0d152b}h2{font-size:21px;letter-spacing:-.55px;line-height:1.3}h3{font-size:17px;letter-spacing:-.3px}p{line-height:1.65}small{line-height:1.5}svg{flex-shrink:0}button{border:0;background:none}input,select,textarea{min-width:0;border:1px solid #dce4f2;border-radius:10px;padding:11px 12px;background:white;color:var(--text)}input::placeholder,textarea::placeholder{color:#9aa3b6}select{padding-right:25px}textarea{resize:vertical}input[type=checkbox]{width:17px;height:17px;accent-color:var(--blue);flex-shrink:0}input[type=date],input[type=time]{min-height:39px}::selection{background:#c8d7ff}strong,b{font-weight:650}.muted{color:var(--muted)}.blue-link{color:var(--blue)}.danger{color:#cc3151!important}.full-width{width:100%}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:10px 16px;border-radius:10px;font-size:13px;font-weight:600;line-height:1.35;transition:background .16s,transform .16s;white-space:nowrap}.button:hover:not(:disabled){transform:translateY(-1px)}.button-dark{background:var(--blue);color:white;box-shadow:0 3px 6px #1646ff16}.button-dark:hover:not(:disabled){background:var(--blue-dark)}.button-outline{border:1px solid #d9e2f3;background:#f9fbff;color:#354362}.button-outline:hover:not(:disabled){background:#edf2ff}.button-danger{color:#be2547;background:#fff0f3;border:1px solid #ffc7d2}.button-danger:hover:not(:disabled){background:#ffe1e9}.icon-button{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:9px;color:#667694;flex-shrink:0}.icon-button:hover:not(:disabled){background:#edf2ff;color:var(--blue)}.small-icon{width:26px;height:30px}.text-button{display:inline-flex;gap:6px;align-items:center;font-weight:600;font-size:12px;padding:5px 0}.text-button:hover{text-decoration:underline}.compact-button{padding:8px 12px;min-height:34px;font-size:12px}.white-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0}.section-heading{display:flex;align-items:center;gap:12px;margin-bottom:23px}.section-heading>div{min-width:0;flex:1}.section-heading p{font-size:12px;color:var(--muted);margin-top:5px}.section-icon{width:43px;height:43px;border-radius:12px;background:#eef3ff;color:var(--blue);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.eyebrow{font-size:10px;letter-spacing:1.5px;text-transform:uppercase;font-weight:700;color:#8591ab;display:block}.count-badge{padding:3px 8px;background:#f1f5fd;color:#7e89a2;border-radius:7px;font-size:12px;margin-left:4px;vertical-align:middle}.avatar{display:inline-flex;width:32px;height:32px;align-items:center;justify-content:center;background:#e4ecff;color:#2454cc;font-size:11px;font-weight:700;border-radius:50%;flex-shrink:0;letter-spacing:-.3px}.avatar-2{background:#e5f3fa;color:#347f9c}.avatar-3{background:#eeebff;color:#7153c3}.avatar-4{background:#fff0e0;color:#bd7b29}.avatar-large{width:64px;height:64px;font-size:23px}.role-badge{font-size:10px;padding:5px 8px;border-radius:8px;font-weight:600;white-space:nowrap}.role-admin{color:#0759ca;background:#e2efff}.role-teacher{color:#573ae8;background:#efedff}.status-tag{font-size:10px;font-weight:600;padding:5px 9px;border-radius:7px;display:inline-flex;align-items:center;gap:5px}.status-tag.active{background:#e7f8ed;color:#228252}.status-tag.expired{background:#fff4df;color:#a56e13}.status-tag.revoked{background:#f1f2f6;color:#8f95a4}.optional{color:#9aa4b7;font-size:11px;font-weight:400;margin-left:5px}
/* Shell: original SVG wordmark, no restyling or replacement of its paths. */
.app-shell{min-height:100vh;display:flex}.sidebar{width:226px;position:fixed;inset:0 auto 0 0;background:linear-gradient(155deg,#101a32,#0d172c 65%,#111d37);color:#fff;z-index:40;display:flex;flex-direction:column;padding:28px 15px 19px;overflow-y:auto}.brand{display:block;padding:0 10px;margin-bottom:11px}.brand img{display:block;width:184px;height:36px;object-fit:contain;filter:none}.location-label{display:flex;gap:6px;align-items:center;justify-content:center;color:#afb9d1;font-size:12px;margin-bottom:31px}.main-nav{display:flex;flex-direction:column;gap:7px}.nav-item{display:flex;align-items:center;gap:15px;color:#d7deed;min-height:44px;border-radius:10px;padding:12px 14px;text-align:left;font-size:13px;font-weight:500;width:100%;transition:background .15s}.nav-item.active{color:white;background:linear-gradient(108deg,#1257ff,#1646ff);box-shadow:0 5px 20px #05229635}.nav-item:hover:not(.active){background:#ffffff0a}.nav-item small{margin-left:auto;font-size:11px;color:#a4b7df;background:#ffffff0a;border-radius:5px;padding:2px 5px}.sidebar-bottom{margin-top:auto;padding-top:35px}.sidebar-db{padding:13px 10px;border:1px solid #ffffff24;border-radius:12px;background:#ffffff04;display:flex;align-items:center;gap:10px;text-align:left;width:100%}.sidebar-db>svg{color:#41d67d}.sidebar-db span:not(.db-status){flex:1;min-width:0}.sidebar-db b{display:block;font-size:11px;font-weight:600;white-space:nowrap}.sidebar-db small{display:block;font-size:10px;color:#b2bed6;margin-top:5px}.db-status{width:18px;height:18px;border-radius:50%;background:#1f9f5f;color:white;display:flex;align-items:center;justify-content:center}.db-status.error{background:#c34050}.sidebar-help{display:flex;align-items:center;gap:7px;font-size:10px;color:#91a0be;margin-top:15px;width:100%;justify-content:center}.sidebar-help>svg:last-child{margin-left:5px}.main-shell{margin-left:226px;width:calc(100% - 226px);min-width:0}.topbar{min-height:100px;padding:24px 27px 20px;display:flex;gap:20px;justify-content:space-between;align-items:center}.topbar-heading{display:flex;align-items:center;gap:12px;min-width:0}.topbar-heading p{color:#8b95a9;font-size:12px;margin-top:6px}.wave{font-size:25px;margin-left:9px;display:inline-block;vertical-align:2px}.topbar-actions{display:flex;align-items:center;gap:13px;flex-shrink:0}.topbar-divider{height:29px;width:1px;background:#d9e2f4}.profile-trigger{display:flex;align-items:center;gap:10px;text-align:left}.profile-trigger strong{font-size:12px;max-width:190px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-trigger small{font-size:10px;color:#939db1;display:block;margin-top:4px}.profile-avatar{height:38px;width:38px;background:linear-gradient(#e9effc,#dce6fc);font-size:12px}.profile-trigger>svg{color:#8492ab;margin-left:4px}.mobile-menu{display:none}.main-content{padding:0 27px 32px;max-width:2000px;margin:auto}.app-footer{padding:10px 27px 24px;display:flex;justify-content:space-between;color:#929bb0;font-size:10px}.app-footer>span:first-child{font-weight:600}.demo-banner,.info-banner,.error-banner{border-radius:11px;display:flex;align-items:center;gap:10px;font-size:12px;padding:12px 15px;margin-bottom:20px;line-height:1.65}.demo-banner{background:#e8eeff;color:#4b65a2;border:1px solid #dae4ff;padding:8px 12px;font-size:11px}.demo-banner a{margin-left:auto;white-space:nowrap;display:flex;align-items:center;gap:5px;color:var(--blue);font-weight:600}.info-banner{background:#edf3ff;color:#506b9a;border:1px solid #dbe6fe}.error-banner{color:#ae294b;background:#fff0f3;border:1px solid #fdd1dc}.error-banner button{margin-left:auto}
/* Top horizontal gallery */
.top-gallery{margin:0 0 22px}.gallery-heading{display:flex;align-items:center;justify-content:space-between;margin:0 0 10px;gap:12px}.gallery-heading>div:first-child{display:flex;align-items:center;gap:10px}.gallery-eyebrow{display:flex;align-items:center;gap:6px;font-size:9px;letter-spacing:1.1px;color:#8a94a9;font-weight:700}.gallery-heading h2{font-size:12px;letter-spacing:0;font-weight:500;color:#98a1b4}.gallery-heading h2>span{color:var(--blue)}.gallery-controls{display:flex;align-items:center;gap:6px}.gallery-filter{background:#eaf0fb;border-radius:7px;padding:3px;display:flex;margin-right:4px}.gallery-filter button{padding:5px 9px;border-radius:5px;font-size:10px;color:#8390a7}.gallery-filter .selected{background:#fff;box-shadow:0 1px 4px #10234a14;color:#2a54b9}.gallery-arrow{width:27px;height:27px;background:white;border:1px solid #e1e8f6;border-radius:50%;color:#536e9c}.gallery-upload{min-height:29px;font-size:10px;padding:6px 9px;background:white;border:1px solid #e0e8f6;border-radius:7px;color:#4870c4}.gallery-track{display:flex;gap:11px;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:thin;scrollbar-color:#d6e0f5 transparent;padding-bottom:4px;border-radius:15px}.gallery-item{min-width:245px;width:245px;max-width:30%;height:166px;position:relative;scroll-snap-align:start;border-radius:15px;overflow:hidden;flex-shrink:0}.gallery-image-button{display:block;width:100%;height:100%;padding:0;position:relative;overflow:hidden;text-align:left}.gallery-image-button img{width:100%;height:100%;object-fit:cover;transition:transform .3s}.gallery-image-button:hover img{transform:scale(1.035)}.gallery-photo-shade{position:absolute;inset:0;background:linear-gradient(transparent 38%,#0d1637a6)}.gallery-photo-caption{position:absolute;bottom:14px;left:14px;right:20px;color:white}.gallery-photo-caption>span{display:flex;align-items:center;gap:8px;font-size:10px;opacity:.85}.gallery-photo-caption em{font-style:normal;font-size:9px;background:#ffffff25;border-radius:5px;padding:2px 5px}.gallery-photo-caption strong{display:block;font-size:12px;margin-top:7px}.gallery-open{position:absolute;right:10px;bottom:12px;color:white}.gallery-delete{position:absolute;top:9px;right:9px;background:#111c3c66;color:white;width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s}.gallery-item:hover .gallery-delete,.gallery-delete:focus-visible{opacity:1}.gallery-add-card{min-width:220px;flex:1;scroll-snap-align:start;height:166px;border-radius:15px;border:1px dashed #cbd9f1;display:flex;align-items:center;justify-content:center;flex-direction:column;background:linear-gradient(140deg,#ecf2ff,#f6f9ff);padding:20px;color:#7e95bf}.gallery-add-icon{height:36px;width:36px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:white;color:#5883ee;margin-bottom:9px}.gallery-add-card strong{font-size:12px;color:#5574a9}.gallery-add-card>span:not(.gallery-add-icon){font-size:10px;margin-top:6px}.gallery-add-card small{font-size:9px;margin-top:7px;color:#a5b2ca}.gallery-add-empty{width:100%;flex-basis:100%}.gallery-bottom{display:none}
/* Dashboard */
.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:0 0 21px}.stat-tile{display:flex;align-items:center;gap:15px;padding:20px 17px;min-height:105px}.stat-icon{width:50px;height:50px;display:flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:13px;color:#1646ff;background:linear-gradient(130deg,#e5ecff,#f0f4ff)}.stat-icon.sky{color:#3975ff;background:#e8f3ff}.stat-icon.gold,.section-icon.gold{color:#f29d19;background:#fff4e4}.stat-icon.violet{color:#6753ff;background:#f0ebff}.stat-tile>div{min-width:0;position:relative}.stat-tile>div>span{font-size:11px;font-weight:600;display:block;white-space:nowrap}.stat-tile strong{display:inline-block;font-size:29px;letter-spacing:-1px;color:#121a30;line-height:1.2;margin-top:5px}.stat-tile small{display:block;font-size:9px;color:#9aa5b9;margin-top:5px}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1fr) 305px;gap:18px;align-items:start}.journal-card{overflow:hidden}.journal-title-row{padding:20px 20px 16px;display:flex;justify-content:space-between;align-items:center;gap:10px}.group-chip-track{display:flex;gap:9px;overflow:auto;padding:0 20px 20px;scrollbar-width:thin;scrollbar-color:#d6e1f5 transparent}.group-chip{padding:12px 14px;min-width:167px;max-width:200px;flex:1;border:1px solid #e5ebf6;background:linear-gradient(130deg,#fff,#f9fbff);border-radius:12px;text-align:left;min-height:70px}.group-chip.selected{border:1.5px solid var(--blue);background:linear-gradient(140deg,#fafcff,#eaf0ff);box-shadow:0 0 0 2px #1646ff08}.group-chip-name{display:flex;gap:8px;align-items:center;font-size:14px;font-weight:650;white-space:nowrap;letter-spacing:-.35px}.group-chip-name i{width:7px;height:7px;border-radius:50%;background:#32b85c;box-shadow:0 0 0 3px #32b85c0b}.group-chip small{font-size:10px;color:#8290a7;display:block;margin-left:15px;margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.journal-group-heading{display:flex;gap:12px;justify-content:space-between;align-items:center;margin:0 20px;padding-top:18px;border-top:1px solid #edf1f8}.journal-group-heading h3{font-size:16px;line-height:1.5}.journal-group-heading h3 span{font-weight:400;color:#92a0b8}.journal-group-heading p{color:#96a2b6;font-size:10px;margin-top:2px}.heading-actions{display:flex;align-items:center;gap:7px}.journal-toolbar{display:flex;align-items:center;gap:10px;padding:14px 20px;color:#9aa6bb}.journal-toolbar>select{font-size:11px;background:#fafcff;border-color:#e7edf7;padding:8px 12px}.date-control{display:inline-flex;align-items:center;gap:6px;background:#f3f6fc;border-radius:7px;padding:0 6px;color:#6984b5;flex-shrink:0}.date-control input{border:0;background:none;padding:7px 2px;min-height:30px;font-size:10px;max-width:112px;color:#57729f}.journal-search{display:flex;align-items:center;gap:7px;flex:1;min-width:90px}.journal-search input{width:100%;border:0;padding:6px 0;font-size:11px;background:transparent}.journal-search svg{color:#9ca9bf}.journal-footer{padding:12px 20px 15px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #edf1f9;color:#9aa6b9;gap:10px}.journal-footer>span{display:flex;align-items:center;gap:5px;font-size:9px}.journal-footer .text-button{font-size:10px;color:#6280b4}.students-table-wrap{overflow-x:auto;padding:0 20px 10px;scrollbar-width:thin}.students-table{border-collapse:collapse;width:100%;white-space:nowrap;text-align:left;font-size:11px}.students-table thead{background:#f2f5fc}.students-table th{padding:11px 7px;font-size:10px;color:#687692;font-weight:550}.students-table th:first-child{border-radius:9px 0 0 9px}.students-table th:last-child{border-radius:0 9px 9px 0}.students-table td{padding:10px 7px;border-bottom:1px solid #edf1f8;height:56px}.students-table tr:last-child td{border-bottom:0}.students-table tr.just-awarded{animation:awardflash .65s ease-out}@keyframes awardflash{0%{background:#e0edff}100%{background:transparent}}.row-number{width:23px;color:#98a5bc}.student-name-button{display:flex;align-items:center;gap:9px;padding:0;font-size:11px;font-weight:600;max-width:245px;text-align:left;white-space:normal;line-height:1.5}.student-name-button>span:last-child{max-width:180px}.student-name-button:hover{color:var(--blue)}.student-group{color:#8697b2;font-size:10px}.balance-pill{display:inline-flex;align-items:center;gap:4px;padding:5px 9px;border-radius:20px;background:#e4f7e9;color:#165e36;font-weight:650;font-size:12px}.balance-pill svg{color:#edac19;fill:#ffbd2f;stroke:#ffbd2f}.lesson-value{color:#3868d9;font-size:11px}.student-actions{display:flex;align-items:center;gap:6px}.point-button{min-width:29px;height:29px;border:1px solid #cfddff;background:#f4f7ff;color:var(--blue);font-weight:650;font-size:11px;border-radius:7px}.point-two{background:#eaf0ff}.point-button:hover:not(:disabled){background:var(--blue);color:white;border-color:var(--blue)}.reward-button,.penalty-button{display:flex;align-items:center;justify-content:center;gap:4px;height:29px;padding:0 8px;border-radius:7px;font-size:10px;font-weight:550;color:#1646ff;background:#edf2ff}.reward-button:hover:not(:disabled){background:#dce6ff}.penalty-button{color:#cf3056;background:#fff0f3}.penalty-button:hover:not(:disabled){background:#ffe0e8}.dashboard-aside{display:flex;flex-direction:column;gap:16px}.team-widget,.parent-widget{padding:17px}.widget-title{width:100%;display:flex;align-items:center;gap:8px;text-align:left;margin-bottom:13px;padding:0}.widget-title>svg{color:#3c5eaa}.widget-title h3{font-size:15px;flex:1;letter-spacing:-.4px}.widget-title>svg:last-child{color:#6780af}.mini-users{display:flex;flex-direction:column;gap:2px}.mini-user{display:flex;align-items:center;gap:8px;padding:10px 0;border-top:1px solid #edf1f8;width:100%;text-align:left}.mini-user>.avatar{height:28px;width:28px;font-size:9px}.mini-user>span:nth-child(2){font-size:11px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mini-user .role-badge{font-size:9px;padding:5px 6px}.widget-add{display:flex;align-items:center;justify-content:center;gap:5px;background:#f2f6ff;color:#517bd7;font-size:10px;border-radius:7px;width:100%;padding:8px;margin-top:8px}.parent-widget .widget-title svg{color:var(--blue)}.parent-widget p{font-size:11px;color:#7d8aa5;line-height:1.75;margin:0 0 13px}.parent-widget-preview{display:flex;align-items:center;gap:7px;border:1px solid #e1e8f6;border-radius:8px;padding:10px;color:#8295b9;background:#f7f9fe;margin-bottom:13px}.parent-widget-preview span{font-size:10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.parent-widget>.button{font-size:11px;min-height:38px;padding:10px}.parent-widget>small{display:block;text-align:center;color:#9ba9c1;font-size:9px;margin-top:10px}.sql-widget{display:flex;align-items:center;gap:10px;padding:17px 14px;border-radius:13px;background:linear-gradient(100deg,#e6f8ed,#e1f5e9);color:#198347}.sql-widget>div{flex:1}.sql-widget strong{font-size:11px;display:block;color:#275c3e}.sql-widget span{font-size:9px;color:#6e9d80;display:block;margin-top:4px}.sql-widget.has-error{background:#fff1f3;color:#b94354}.aside-note{padding:7px 18px;color:#8596b8}.aside-note>svg{color:#a0b6e8;margin-bottom:8px}.aside-note h3{font-size:16px;line-height:1.45;color:#7187ae;font-weight:600}.aside-note p{font-size:10px;color:#a0adc3;line-height:1.8;margin-top:8px}.widget-muted{font-size:11px;color:var(--muted);padding:10px 0}
/* Reusable forms and accessible dialogs */
.modal-backdrop{position:fixed;inset:0;background:#0b163e77;backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center;padding:24px}.modal-panel{width:100%;max-width:540px;max-height:90dvh;overflow:auto;overscroll-behavior:contain;background:#fff;border:1px solid #e8eefb;border-radius:22px;padding:24px;box-shadow:0 25px 100px #101a4840}.modal-wide{max-width:950px}.modal-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:22px}.modal-heading h2{font-size:22px}.dialog-form{display:flex;flex-direction:column;gap:17px}.dialog-form label{display:flex;flex-direction:column;gap:7px;font-size:12px;font-weight:600;color:#687792}.dialog-form label>input,.dialog-form label>select,.dialog-form label>textarea{font-size:13px;color:#1c2a44;font-weight:400;width:100%}.dialog-form label small{font-size:10px;font-weight:400;color:#97a2b7;line-height:1.7}.dialog-form label .optional{display:inline;font-weight:400}.dialog-form .checkbox-label{flex-direction:row}.form-description{font-size:12px;color:#8c98af;line-height:1.75}.form-grid-three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.form-footer{display:flex;justify-content:space-between;align-items:center;gap:13px;border-top:1px solid #eef1f7;padding-top:19px;margin-top:6px}.form-footer .button{font-size:12px}.group-name-preview{display:grid;grid-template-columns:1fr auto;gap:7px;background:#eef4ff;border-radius:13px;padding:17px;color:#1b51ce}.group-name-preview span{font-size:10px;grid-column:1;color:#8a9fc7}.group-name-preview strong{grid-column:1;font-size:23px;letter-spacing:-.7px}.group-name-preview svg{grid-column:2;grid-row:1/3;align-self:center;color:#3b6aee}.field-hint{display:flex;align-items:flex-start;gap:7px;font-size:10px;line-height:1.75;color:#94a0b5;font-weight:400}.inline-error{color:#be3455;background:#fff1f4;padding:11px 13px;border-radius:8px;font-size:12px;line-height:1.7;overflow-wrap:anywhere}.empty-state{padding:37px 25px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;color:#99a8c2}.empty-state h3{color:#657caa;font-size:16px}.empty-state h2{color:#4f6796}.empty-state p{font-size:12px;max-width:420px}.empty-state .button{margin-top:7px}.large-empty{min-height:310px}.confirm-content{display:flex;flex-direction:column;align-items:center;text-align:center;gap:15px;padding:10px 10px 15px}.confirm-content p{font-size:13px;color:#7f8aa2}.confirm-icon{width:60px;height:60px;border-radius:50%;background:#eaf1ff;color:#3562d9;display:flex;align-items:center;justify-content:center}.confirm-icon.destructive{background:#ffedf2;color:#d14b68}.deduction-student{display:flex;align-items:center;gap:11px;border-radius:12px;background:#f5f8fe;padding:15px}.deduction-student>div{flex:1}.deduction-student strong{font-size:13px;display:block}.deduction-student div>span{display:block;font-size:10px;color:#90a0bb;margin-top:5px}.deduction-icon{color:var(--blue)}.balance-preview{display:flex;align-items:center;justify-content:space-between;background:#eef6ff;border-radius:10px;padding:13px 15px;color:#6082bd;font-size:11px}.balance-preview strong{font-size:20px;color:#1a56d3}.balance-preview small{font-size:11px;font-weight:400}.student-profile{text-align:center}.student-profile h3{font-size:21px;margin-top:13px}.student-profile>p{font-size:12px;color:#8b9bb7;margin-top:6px}.student-balance-big{background:#f4f7ff;border-radius:16px;margin:18px 0;padding:20px}.student-balance-big>span{font-size:11px;color:#889ab9}.student-balance-big>strong{display:block;font-size:39px;color:var(--blue);margin-top:7px}.student-balance-big small{font-size:13px;font-weight:400;margin-left:7px;color:#8aa2ce}.student-ledger-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:20px}.student-ledger-stats strong{display:block;font-size:18px}.student-ledger-stats span{font-size:10px;color:#8b9ab4;display:block;margin-top:5px}.profile-awards,.profile-deductions{display:flex;gap:10px;margin-bottom:10px}.profile-awards>*{flex:1}.award-button{display:flex;align-items:center;justify-content:center;gap:8px;border-radius:10px;height:42px;background:#eef3ff;color:var(--blue);font-weight:600}.award-two{background:#1646ff;color:#fff}.profile-deductions>*{flex:1}.student-history{margin-top:24px}.student-history h4{font-size:13px;margin-bottom:12px}.activity-row{display:flex;gap:12px;align-items:center;padding:14px 0;border-bottom:1px solid #edf1f8;min-width:0}.activity-row:last-child{border-bottom:0}.activity-info{flex:1;min-width:0}.activity-info strong{font-size:12px;display:block}.activity-info>span{font-size:10px;color:#8e9ab1;display:block;margin-top:4px;overflow-wrap:anywhere}.activity-type-icon{width:32px;height:32px;border-radius:10px;background:#edf3ff;color:#3769e2;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.type-gift{background:#eeecff;color:#7b57d7}.type-penalty{background:#fff0f4;color:#ce5876}.award-chip{border-radius:7px;background:#e9f8ee;color:#2e9759;padding:5px 8px;font-size:12px;font-weight:650}.deducted-chip{background:#fff0f3;color:#c05d75}.activity-undone{opacity:.55}.activity-undone .award-chip{text-decoration:line-through}.lightbox-photo{width:100%;max-height:67vh;object-fit:contain;border-radius:13px;background:#eef3fc}.lightbox-meta{display:flex;align-items:center;gap:6px;color:#899bbd;font-size:12px;margin-top:12px}.toast{position:fixed;bottom:22px;left:calc(50% + 100px);transform:translateX(-50%);z-index:150;display:flex;align-items:center;gap:11px;background:#112447;color:white;box-shadow:0 8px 40px #0b205d38;border:1px solid #ffffff15;border-radius:14px;padding:14px 17px;max-width:min(680px,90vw);min-width:280px;font-size:12px;line-height:1.5}.toast-message{flex:1;overflow-wrap:anywhere}.toast-icon{color:#6cd49b;display:flex}.toast-error{background:#8c2841}.toast-error .toast-icon{color:#ffb4c4}.toast-close{color:#ffffff99;padding:3px;display:flex}.toast-undo{display:flex;gap:4px;align-items:center;color:#b6cdff;font-size:11px;font-weight:600;white-space:nowrap}.local-profile{display:flex;flex-direction:column;gap:13px}.profile-identity{text-align:center;padding:10px 0 18px}.profile-identity h3{margin:14px 0 5px;font-size:21px}.profile-identity p{font-size:12px;color:#8da0be}.verified-email{display:flex;gap:7px;align-items:center;justify-content:center;color:#8499ba;font-size:12px;margin-top:13px}.profile-logout{color:#b74a63;justify-content:center;margin-top:10px}.password-form{padding-top:8px}.help-list{display:flex;flex-direction:column;gap:20px}.help-list>div{display:flex;gap:14px}.help-list>div>span{color:#7da0f6;background:#edf3ff;border-radius:9px;padding:8px;font-size:12px;align-self:flex-start}.help-list h3{font-size:14px;margin-bottom:5px}.help-list p{font-size:12px;color:#8a97ae}.help-demo-note{display:flex;gap:9px;background:#eef4ff;color:#7792bd;font-size:11px;padding:13px;margin:22px 0;border-radius:10px}.help-demo-note svg{flex-shrink:0}
/* Groups, archive, students and ranking */
.page-actions{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:24px}.segmented{display:flex;background:#eaf0fb;border-radius:10px;padding:4px;gap:3px}.segmented button{border-radius:7px;padding:9px 13px;font-size:12px;color:#8192b1;display:flex;align-items:center;justify-content:center;gap:7px}.segmented button.selected{background:white;color:#315fd5;box-shadow:0 2px 5px #1234670e}.group-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.group-tile{padding:23px;min-width:0}.group-tile-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.tile-course-icon{color:var(--blue);background:#eaf1ff;display:flex;align-items:center;justify-content:center;width:49px;height:49px;border-radius:14px}.tone-1{color:#7c59db;background:#f2ecff}.tone-2{color:#30949c;background:#e5f5f6}.group-tile .eyebrow{margin-bottom:7px;font-size:9px}.group-tile h2{font-size:26px;letter-spacing:-1px}.group-tile>p{color:#94a3bc;font-size:12px;margin-top:5px}.tile-meta{display:flex;align-items:center;gap:6px;font-size:11px;color:#8a9dbc;margin:20px 0}.tile-meta>span{margin:0 2px;color:#b4bfd3}.group-tile-actions{display:flex;gap:7px;align-items:center;border-top:1px solid #eff3fa;padding-top:17px}.group-tile-actions .button{flex:1;font-size:11px;min-height:36px;padding:9px 10px}.archive-heading{padding:0 25px 20px}.archive-heading h2{margin-top:12px}.archive-heading p{color:#8e9fba;font-size:12px;margin-top:7px}.archive-history{padding:20px 25px;max-width:750px}.archive-history h3{margin-bottom:10px}.archive-photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:20px 25px}.archive-photo-grid button{padding:0}.archive-photo-grid img{width:100%;height:170px;object-fit:cover;border-radius:12px}.ranking-card{padding:25px;max-width:1050px}.ranking-list{display:flex;flex-direction:column}.ranking-row{display:flex;align-items:center;gap:15px;padding:15px 10px;border-top:1px solid #edf2f9;text-align:left;transition:background .15s}.ranking-row:hover{background:#f5f8ff;border-radius:9px}.rank-place{width:25px;text-align:center;color:#93a5c2;font-size:12px}.rank-0 .rank-place{color:#e7ae1c}.rank-1 .rank-place{color:#8a9bab}.rank-2 .rank-place{color:#c48b5b}.rank-name{flex:1}.rank-name strong{font-size:13px}.rank-name small{display:block;color:#92a2bc;font-size:10px;margin-top:5px}.ranking-row>svg{color:#adbbd2}.history-card{padding:25px}.history-filters{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:20px}.history-filters>input{flex:1;min-width:130px}.history-filters select,.history-filters input{font-size:12px}.checkbox-label{display:flex;align-items:flex-start;gap:9px;font-size:12px;font-weight:400;color:#7c8fac}.checkbox-label input{margin:1px 0 0}.checkbox-label>span{display:block;line-height:1.6}.checkbox-label small{display:block;font-weight:400;color:#9ca9bd;font-size:10px;margin-top:7px;line-height:1.75}.history-limit{color:#99a7bc;font-size:11px;margin-top:20px}.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.gallery-grid-card{overflow:hidden}.gallery-grid-card>button{padding:0;display:block;width:100%}.gallery-grid-card img{width:100%;height:230px;object-fit:cover;display:block}.gallery-grid-card>div{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:14px}.gallery-grid-card>div>span{font-size:12px;color:#7c8fac}.gallery-group-label{display:flex;align-items:center;gap:13px;font-size:12px;color:#8698b5}.gallery-group-label select{min-width:230px;font-size:12px}
/* Team and settings preserve existing account/role operations */
.users-layout{display:grid;grid-template-columns:minmax(0,1fr) 325px;gap:21px;align-items:start}.users-list-card{overflow:hidden}.history-heading{display:flex;align-items:center;gap:15px;justify-content:space-between;padding:24px}.history-heading p{font-size:12px;color:#96a3b9;margin-top:7px}.users-list{padding:0 24px 10px}.user-row{display:flex;align-items:center;gap:12px;border-top:1px solid #edf1f8;padding:18px 0;flex-wrap:wrap}.user-info{flex:1;min-width:0}.user-info strong{font-size:12px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.user-info strong>span:last-child:not(.user-display-name){font-size:9px;color:#8f9db4;background:#eff3fa;padding:2px 6px;border-radius:4px}.user-info p{font-size:11px;color:#94a3ba;overflow-wrap:anywhere;margin-top:3px}.user-info small{font-size:9px;color:#9ca9bd;display:flex;align-items:center;gap:8px;margin-top:8px}.user-actions{display:flex;align-items:center;gap:5px}.user-actions .icon-button{width:30px;height:32px}.user-toggle{height:20px;width:35px;padding:2px;border-radius:15px;background:#dfe6f3;display:flex;align-items:center}.user-toggle span{width:16px;height:16px;border-radius:50%;background:white;box-shadow:0 1px 3px #15234220}.user-toggle.enabled{background:#4773f6}.user-toggle.enabled span{margin-left:auto}.owner-shield{color:#7197e9;margin-left:8px}.user-row.inactive{opacity:.6}.user-row.editing{padding-bottom:22px}.user-name-editor{flex-basis:100%;padding:16px;background:#f6f9ff;border:1px solid #e3ebfa;border-radius:11px;margin-top:10px}.user-name-editor-actions{display:flex;gap:9px;flex-wrap:wrap}.user-name-editor-actions .button{font-size:11px}.users-sidebar{display:flex;flex-direction:column;gap:17px}.settings-card{padding:24px}.settings-card>h2{margin:15px 0 8px}.settings-card>p{font-size:12px;color:#92a1b8;margin-bottom:18px}.settings-card>.dialog-form{margin-top:18px}.default-password{display:flex;align-items:center;gap:10px;color:#8ca2c4;background:#f3f7ff;padding:12px;border-radius:10px}.default-password span{font-size:9px;display:block}.default-password strong{display:block;color:#506d9c;margin-top:5px;font-size:13px}.roles-guide{border:1px solid #e5ecf9;border-radius:16px;padding:21px;color:#8698b6;background:#ecf2fd}.roles-guide>div{display:flex;align-items:center;gap:8px;color:#5277bc;margin-bottom:17px}.roles-guide h3{font-size:15px}.roles-guide article+article{margin-top:15px}.roles-guide strong{color:#566e95;font-size:12px}.roles-guide p{font-size:11px;margin-top:5px;line-height:1.8}.created-credentials{margin:0 24px 20px;background:#eef8f2;border:1px solid #d5eddf;padding:16px;border-radius:11px;color:#3f8560}.created-credentials>div{display:flex;align-items:center;gap:8px}.created-credentials .icon-button{margin-left:auto}.created-credentials p{font-size:12px;margin-top:7px}.created-credentials code{display:block;font-size:16px;padding:13px;background:white;color:#325f47;border:1px dashed #bbdcca;border-radius:7px;margin:10px 0;overflow-wrap:anywhere}.created-credentials small{font-size:10px;display:block;line-height:1.8}.users-error{padding:0 24px 18px}.settings-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px;align-items:start}.settings-right{display:flex;flex-direction:column;gap:22px}.danger-zone{border-color:#f3dfe5}.danger-zone h2{font-size:18px;color:#a54f66;margin:0 0 10px}.backup-result{font-size:11px;background:#f1f8f5;border:1px solid #dfede6;border-radius:10px;padding:14px;margin-top:16px;overflow-wrap:anywhere}.backup-result strong{color:#528369}.backup-result code{display:block;background:#fff;border-radius:7px;font-size:10px;padding:10px;margin:10px 0;color:#537861;white-space:pre-wrap;overflow-wrap:anywhere}.backup-result small{display:block;color:#879d90;font-size:10px;line-height:1.7}.reset-warning{display:flex;align-items:flex-start;gap:12px;background:#fff2f4;border-radius:12px;padding:15px;color:#be4c69}.reset-warning strong{font-size:13px}.reset-warning p{font-size:11px;margin-top:5px;line-height:1.75;color:#ac8290}.reset-counts{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.reset-counts>div{text-align:center;padding:13px 5px;border:1px solid #e8edf6;border-radius:10px}.reset-counts b{font-size:21px;display:block}.reset-counts span{font-size:10px;color:#92a1b7;display:block;margin-top:5px}.reset-preserve{display:flex;gap:9px;font-size:11px;color:#8598b6;line-height:1.8}.dialog-form label.reset-users-option{flex-direction:row;align-items:flex-start;gap:10px;padding:12px;background:#f5f8fe;border-radius:10px;line-height:1.6}.dialog-form label.reset-users-option input{width:17px;flex-shrink:0}.reset-users-option strong{font-size:11px}.reset-users-option small{display:block;margin-top:4px}.reset-loading{display:flex;align-items:center;gap:8px;color:#889dbd;font-size:12px}
/* Share creation & read-only family pages */
.parent-manager{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px;align-items:start}.share-form-card,.share-list-card{padding:25px}.wide-segment{width:100%}.wide-segment>button{flex:1;font-size:11px;padding:10px 7px}.privacy-note{display:flex;align-items:flex-start;gap:8px;background:#f4f8ff;color:#8a9dbb;padding:12px;border-radius:9px;font-size:11px}.share-created{padding:16px;border-radius:12px;background:#eaf7ef;border:1px solid #cbe7d8;margin-top:24px}.share-created>div:first-child{display:flex;gap:7px;align-items:center;font-size:12px;color:#448566}.share-created>input{width:100%;font-size:10px;background:white;margin:12px 0;color:#4f6988}.share-created-buttons{display:flex;gap:8px}.share-created-buttons .button{font-size:11px;flex:1;min-height:35px}.share-created small{display:block;font-size:10px;color:#81a08e;margin-top:12px;line-height:1.7}.share-item{display:flex;gap:12px;padding:18px 0;border-top:1px solid #edf1f7;align-items:flex-start}.share-item-icon{background:#edf3ff;color:#6a8ecb;border-radius:9px;display:flex;align-items:center;justify-content:center;width:33px;height:33px;flex-shrink:0}.share-item>div{flex:1;min-width:0}.share-item strong{display:block;font-size:12px;overflow-wrap:anywhere}.share-item p{font-size:10px;color:#8d9bb3;margin-top:5px}.share-item small{font-size:9px;color:#a3afc2;display:block;margin:7px 0}.share-inactive{opacity:.65}.share-safety{border-top:1px solid #edf2fa;display:flex;gap:8px;margin-top:15px;padding-top:20px;color:#94a4bc;font-size:10px;line-height:1.8}.parent-page{min-height:100vh;background:radial-gradient(ellipse at 20% 0,#e5edff,transparent 55%),#f6f9ff}.parent-header{height:88px;max-width:1050px;padding:22px 25px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:10px}.parent-header img{width:157px;height:auto;filter:none}.parent-header>span{display:flex;align-items:center;gap:6px;font-size:11px;color:#7b92ba}.parent-main{max-width:950px;padding:35px 25px 30px;margin:auto}.parent-greeting{text-align:center;margin-bottom:37px}.parent-greeting .eyebrow{font-size:10px;letter-spacing:1.7px;color:#6285ca}.parent-greeting h1{font-size:31px;line-height:1.4;margin:16px 0 10px;color:#172e5a}.parent-greeting p{color:#8ca1c2;font-size:13px}.parent-student-card{padding:27px;display:flex;align-items:center;gap:20px;background:linear-gradient(105deg,#fff,#f8fbff)}.parent-student-card>div:not(.parent-balance){flex:1;min-width:0}.parent-student-card h1{font-size:24px;margin-top:7px}.parent-student-card p{color:#8da2c4;font-size:12px;margin-top:7px}.parent-balance{text-align:right}.parent-balance small{font-size:10px;color:#91a5c5}.parent-balance strong{display:flex;align-items:center;justify-content:flex-end;gap:8px;color:#1646ff;font-size:40px;letter-spacing:-1.5px;margin:7px 0}.parent-balance strong svg{color:#f6b43f;fill:#fff2d5}.parent-balance span{display:block;color:#99adca;font-size:9px}.parent-schedule{display:flex;align-items:center;justify-content:center;gap:28px;margin:22px 0 30px;color:#718ebc;flex-wrap:wrap}.parent-schedule>div{display:flex;align-items:center;gap:7px;font-size:11px}.parent-stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin-bottom:27px}.parent-stat-grid>div{padding:23px;text-align:center;color:#6589ce}.parent-stat-grid strong{display:block;font-size:25px;color:#2a4f8b;margin:10px 0 5px}.parent-stat-grid span{font-size:11px;color:#91a4c2}.parent-history{padding:26px}.parent-history-row{display:flex;align-items:center;gap:13px;padding:17px 0;border-top:1px solid #edf2fa}.parent-history-row>div{flex:1;min-width:0}.parent-history-row strong{font-size:12px;display:block;line-height:1.6;overflow-wrap:anywhere}.parent-history-row small{font-size:10px;color:#96a7c2;display:block;margin-top:5px}.parent-history-row>b{font-size:17px;color:#379b65}.parent-history-row>b.negative{color:#ac7296}.parent-gallery{margin-top:35px}.parent-gallery>h2{font-size:20px;margin-bottom:20px}.parent-gallery>div{display:flex;gap:15px;overflow:auto;scroll-snap-type:x proximity}.parent-gallery figure{margin:0;min-width:270px;width:270px;overflow:hidden;scroll-snap-align:start}.parent-gallery img{width:100%;height:190px;object-fit:cover;border-radius:13px}.parent-gallery figcaption{color:#9bacbd;font-size:11px;margin-top:9px}.parent-readonly{display:flex;align-items:flex-start;justify-content:center;gap:9px;text-align:center;color:#a0b1cc;font-size:10px;margin-top:32px;line-height:1.8}.parent-footer{max-width:950px;padding:25px;display:flex;justify-content:space-between;margin:auto;color:#98a9c6;font-size:10px;font-weight:600}.parent-footer span{font-weight:400}.parent-unavailable{padding:55px 30px;text-align:center;color:#849ec8;display:flex;flex-direction:column;gap:20px;align-items:center}.parent-unavailable h1{color:#45679d;font-size:25px}.parent-unavailable p{font-size:13px;max-width:450px}
/* Login uses the same original logo and local authentication. */
.login-page{min-height:100dvh;display:grid;grid-template-columns:45% 55%;background:#f8faff}.login-brand-panel{background:radial-gradient(ellipse at top right,#1c4bff77,transparent 55%),linear-gradient(155deg,#102463,#0e1837);color:#fff;padding:48px 50px;display:flex;flex-direction:column;position:relative}.login-logo img{width:184px;filter:none}.login-brand-content{margin:auto 0;padding:50px 0}.login-kicker{font-size:9px;letter-spacing:2.4px;color:#9cb3ff}.login-brand-content h1{color:#fff;font-size:42px;line-height:1.3;margin:28px 0 24px;letter-spacing:-1.4px}.login-brand-content h1 em{font-style:normal;color:#8caaff}.login-brand-content>p{font-size:14px;color:#b5c7f2;line-height:1.9}.login-code{border-top:1px solid #ffffff1c;margin-top:38px;padding-top:26px;display:flex;align-items:center;gap:17px;color:#769dff}.login-code span{font-size:11px;line-height:1.7;color:#a4bdf1;flex:1}.login-code strong{font-size:38px;letter-spacing:-1px;color:#a2bdff}.login-brand-footer{font-size:9px;letter-spacing:2px;color:#748bb4;display:flex;justify-content:space-between;gap:10px}.login-brand-footer span{letter-spacing:0;font-size:9px}.login-main{display:flex;align-items:center;justify-content:center;padding:45px}.login-card{width:100%;max-width:400px}.auth-icon{height:50px;width:50px;display:flex;align-items:center;justify-content:center;color:#3c68df;background:#edf3ff;border-radius:15px;margin-bottom:25px}.login-card .eyebrow{font-size:8px;letter-spacing:1.8px}.login-card>h2{font-size:31px;margin:14px 0 13px;color:#1a315c}.login-description{font-size:13px;color:#849bbf;line-height:1.8;margin-bottom:30px}.login-card .dialog-form{gap:20px}.login-card .dialog-form input{min-height:45px}.login-card .button-dark{min-height:45px}.login-footnote{display:flex;align-items:flex-start;gap:8px;font-size:10px;color:#a0b0ca;line-height:1.7;margin-top:25px}.demo-link{color:#8a9fbe;display:flex;align-items:center;gap:5px;font-size:11px;justify-content:center;margin-top:24px}.login-loading{display:flex;align-items:center;gap:10px;font-size:13px;color:#8b9fbe;line-height:1.7}
/* Responsive: usable tables remain horizontally scrollable; surrounding page never overflows. */
@media(min-width:1650px){.sidebar{width:244px;padding-left:20px;padding-right:20px}.main-shell{margin-left:244px;width:calc(100% - 244px)}.main-content{padding:0 34px 35px}.topbar{padding-left:34px;padding-right:34px}.dashboard-grid{grid-template-columns:minmax(0,1fr) 340px;gap:22px}.stat-tile{padding:23px}.gallery-item{width:270px;min-width:270px;height:184px}.gallery-add-card{height:184px}.student-name-button{font-size:12px}.students-table td{height:61px}.student-actions{gap:8px}.point-button{min-width:34px;height:31px}.reward-button,.penalty-button{font-size:11px;height:31px;padding:0 9px}.widget-title h3{font-size:16px}.mini-user>span:nth-child(2){font-size:12px}}
@media(max-width:1399px){.dashboard-grid{grid-template-columns:minmax(0,1fr) 276px;gap:15px}.main-content{padding:0 22px 28px}.topbar{padding:23px 22px}.reward-button>span,.penalty-button>span{display:none}.reward-button,.penalty-button{width:29px;padding:0}.stat-tile{padding:17px 13px;gap:10px}.stat-icon{width:42px;height:42px;border-radius:11px}.stat-icon svg{width:23px;height:23px}.stat-tile>div>span{font-size:10px}.stat-tile strong{font-size:27px}.stat-tile small{font-size:8px}.group-tiles{gap:15px}.group-tile{padding:20px}.group-tile-actions{gap:4px}.users-layout{grid-template-columns:minmax(0,1fr) 300px}.sidebar{width:212px;padding-left:12px;padding-right:12px}.main-shell{margin-left:212px;width:calc(100% - 212px)}.brand{padding-left:6px;padding-right:6px}.brand img{width:176px;height:auto}.nav-item{gap:12px;padding-left:12px;font-size:12px}.location-label{font-size:11px}.journal-title-row,.journal-toolbar{padding-left:17px;padding-right:17px}.students-table-wrap{padding-left:17px;padding-right:17px}.journal-group-heading{margin-left:17px;margin-right:17px}.widget-title h3{font-size:14px}.topbar-heading h1{font-size:26px}}
@media(max-width:1199px){.dashboard-grid{grid-template-columns:minmax(0,1fr) 247px;gap:13px}.sidebar{width:194px;padding-left:11px;padding-right:11px}.main-shell{margin-left:194px;width:calc(100% - 194px)}.brand img{width:159px}.nav-item{padding:11px 10px;font-size:12px;gap:10px}.nav-item svg{width:19px}.sidebar-db{gap:7px;padding:12px 7px}.sidebar-db>svg{width:21px}.sidebar-db b{font-size:10px}.stats-grid{gap:10px}.stat-tile{gap:9px;padding:16px 11px}.stat-icon{height:36px;width:36px}.stat-icon svg{width:20px}.stat-tile>div>span{font-size:9px}.stat-tile small{display:none}.stat-tile strong{font-size:25px}.stat-tile{min-height:88px}.gallery-heading h2{display:none}.gallery-item{min-width:210px;height:155px}.gallery-add-card{min-width:200px;height:155px}.profile-trigger strong{max-width:120px}.journal-group-heading h3{font-size:14px}.journal-toolbar{gap:7px}.student-name-button{gap:7px}.student-name-button .avatar{width:27px;height:27px;font-size:9px}.students-table th{font-size:9px}.students-table td,.students-table th{padding-left:5px;padding-right:5px}.student-actions{gap:4px}.lesson-column{display:none}.student-name-button>span:last-child{max-width:125px}.widget-title h3{font-size:13px}.team-widget,.parent-widget{padding:14px}.mini-user>span:nth-child(2){font-size:10px}.mini-user .role-badge{font-size:8px}.group-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.users-layout{grid-template-columns:minmax(0,1fr) 275px;gap:15px}.settings-card{padding:20px}.users-list{padding:0 18px 10px}.history-heading{padding:20px 18px}.parent-manager{gap:16px}.share-form-card,.share-list-card{padding:22px}.parent-manager .section-heading h2{font-size:18px}.settings-layout{gap:17px}}
@media(max-width:1023px){.dashboard-grid{grid-template-columns:1fr}.dashboard-aside{display:grid;grid-template-columns:1fr 1fr;gap:15px}.sql-widget{grid-column:1/-1}.aside-note{display:none}.students-table th{font-size:11px}.students-table td{font-size:12px}.student-name-button{font-size:12px}.student-name-button>span:last-child{max-width:210px}.lesson-column{display:table-cell}.reward-button>span,.penalty-button>span{display:inline}.reward-button,.penalty-button{width:auto;padding:0 7px;font-size:10px}.journal-group-heading h3{font-size:17px}.gallery-item{max-width:50%}.profile-trigger>span:nth-child(2){display:none}.topbar-heading h1{font-size:24px}.topbar-heading p{font-size:11px}.users-layout,.settings-layout,.parent-manager{grid-template-columns:1fr}.users-sidebar{display:grid;grid-template-columns:1fr 1fr}.settings-right{display:grid;grid-template-columns:1fr 1fr;gap:15px}.settings-card h2{font-size:18px}.section-heading p{font-size:11px}.settings-card .button{white-space:normal}.parent-manager .share-form-card{max-width:none}.share-list-card .share-list{display:grid;grid-template-columns:1fr 1fr;column-gap:18px}.share-created-buttons .button{max-width:230px}.parent-main{padding-top:24px}}
@media(max-width:767px){.sidebar{transform:translateX(-100%);transition:transform .2s;width:240px;padding:25px 17px 20px}.sidebar.is-open{transform:translateX(0)}.sidebar .brand img{width:184px}.sidebar .nav-item{font-size:14px;gap:14px;min-height:43px}.location-label{font-size:12px;margin-bottom:22px}.sidebar-db b{font-size:11px}.sidebar-db small{font-size:10px}.sidebar-backdrop{position:fixed;inset:0;background:#0b173866;z-index:35;backdrop-filter:blur(2px)}.main-shell{margin-left:0;width:100%}.topbar{padding:21px 17px 18px;min-height:90px;gap:10px}.topbar-heading{gap:9px}.topbar-heading h1{font-size:22px;letter-spacing:-.8px}.topbar-heading p{font-size:10px;max-width:250px;line-height:1.6;margin-top:4px}.mobile-menu{display:inline-flex;width:25px}.topbar-actions{gap:5px}.desktop-refresh,.topbar-divider,.profile-trigger>svg{display:none}.profile-trigger{padding:0}.profile-avatar{width:34px;height:34px;font-size:11px}.wave{font-size:20px;margin-left:5px}.main-content{padding:0 16px 25px}.demo-banner{font-size:9px;padding:9px 11px;gap:7px;line-height:1.6}.demo-banner a{font-size:9px}.gallery-heading{margin-bottom:10px}.gallery-eyebrow{font-size:8px;letter-spacing:1px}.gallery-filter button{font-size:9px;padding:5px 7px}.gallery-arrow{display:none}.gallery-upload{font-size:9px;padding:5px 7px;min-height:27px;gap:4px}.gallery-upload>span{display:none}.gallery-upload svg{width:15px}.gallery-item{min-width:210px;width:210px;max-width:80%;height:158px}.gallery-track{gap:10px;scrollbar-width:none}.gallery-add-card{min-width:195px;height:158px}.gallery-delete{opacity:1;background:#0b1d3855}.top-gallery{margin-bottom:19px}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:19px}.stat-tile{padding:16px 13px;gap:12px;min-height:94px;border-radius:14px}.stat-icon{width:39px;height:39px}.stat-icon svg{width:23px;height:23px}.stat-tile>div>span{font-size:10px}.stat-tile strong{font-size:27px;margin-top:3px}.stat-tile small{display:block;font-size:8px;margin-top:4px}.dashboard-grid{gap:16px}.journal-title-row{padding:17px 14px 15px}.journal-title-row h2{font-size:20px}.journal-title-row .button{font-size:11px;min-height:35px;padding:8px 10px;gap:5px}.group-chip-track{padding:0 14px 17px;gap:9px;scrollbar-width:none}.group-chip{min-width:159px;padding:11px 12px;min-height:65px;border-radius:10px}.group-chip-name{font-size:13px}.group-chip small{font-size:9px;margin-top:5px}.journal-group-heading{padding-top:16px;margin:0 14px;gap:7px;align-items:flex-start}.journal-group-heading h3{font-size:14px}.journal-group-heading p{font-size:9px}.heading-actions{gap:4px}.heading-actions .button{font-size:10px;padding:7px 9px;min-height:30px;gap:4px}.heading-actions .icon-button{width:30px;height:30px}.journal-toolbar{padding:13px 14px;gap:6px;flex-wrap:wrap}.date-control input{font-size:10px;max-width:109px}.date-control{gap:3px}.journal-search{min-width:100px}.journal-search input{font-size:11px}.journal-toolbar>.icon-button{width:27px;height:28px}.journal-toolbar .text-button{font-size:10px}.students-table-wrap{padding:0 14px 10px;scrollbar-width:thin}.students-table{min-width:400px}.students-table th{font-size:9px}.students-table td{font-size:10px;height:55px;padding:10px 5px}.student-name-button{font-size:11px;gap:7px;max-width:165px}.student-name-button>span:last-child{max-width:135px}.student-name-button .avatar{width:25px;height:25px;font-size:8px}.lesson-column{display:none}.row-number{width:17px}.reward-button>span,.penalty-button>span{display:none}.reward-button,.penalty-button{width:29px;padding:0}.point-button{height:29px;min-width:29px;font-size:11px}.student-actions{gap:5px}.student-actions .small-icon{width:24px}.balance-pill{font-size:11px;padding:4px 7px}.journal-footer{padding:10px 14px 13px;gap:6px}.journal-footer>span{font-size:8px}.journal-footer .text-button{font-size:9px}.dashboard-aside{grid-template-columns:1fr;gap:15px}.team-widget,.parent-widget{padding:19px}.widget-title h3{font-size:16px}.mini-user>span:nth-child(2){font-size:12px}.mini-user .role-badge{font-size:10px;padding:5px 8px}.mini-user .avatar{width:32px;height:32px;font-size:10px}.widget-add{padding:10px;font-size:11px}.parent-widget p{font-size:12px}.parent-widget-preview span{font-size:11px}.parent-widget>.button{font-size:12px;min-height:40px}.parent-widget>small{font-size:10px}.sql-widget{padding:17px 20px}.sql-widget strong{font-size:12px}.sql-widget span{font-size:10px}.app-footer{padding:12px 17px 25px;font-size:9px;gap:10px}.app-footer>span:last-child{font-size:8px}.page-actions{gap:12px;flex-wrap:wrap;margin-bottom:17px}.segmented{flex-wrap:wrap;padding:4px}.segmented button{font-size:10px;padding:8px}.page-actions .button{font-size:11px}.group-tiles{grid-template-columns:1fr;gap:15px}.group-tile{padding:22px}.group-tile-top{margin-bottom:17px}.group-tile h2{font-size:26px}.group-tile>p{font-size:13px}.group-tile-actions .button{font-size:12px}.tile-meta{font-size:12px}.gallery-grid{grid-template-columns:1fr;gap:17px}.gallery-group-label{width:100%;justify-content:space-between}.gallery-group-label select{flex:1;min-width:0}.gallery-grid-card img{height:230px}.ranking-card,.history-card{padding:20px 17px}.ranking-row{gap:9px;padding:14px 0}.rank-name strong{font-size:12px}.rank-name small{font-size:10px}.rank-place{width:21px}.ranking-row>.avatar{width:30px;height:30px;font-size:10px}.section-heading{gap:10px;align-items:flex-start}.section-heading h2{font-size:18px}.section-heading p{font-size:11px;line-height:1.7}.section-icon{width:39px;height:39px;border-radius:11px}.history-filters{gap:10px}.history-filters>input,.history-filters>select{width:100%;flex:auto;min-width:0}.history-filters .checkbox-label{font-size:11px}.activity-row{gap:10px}.activity-info strong{font-size:11px}.activity-info>span{font-size:9px}.activity-type-icon{width:29px;height:29px}.award-chip{font-size:11px;padding:4px 7px}.activity-row .icon-button{width:25px}.archive-photo-grid{grid-template-columns:repeat(2,1fr);padding:18px}.archive-photo-grid img{height:130px}.archive-history{padding:20px 18px}.archive-heading{padding:0 18px 18px}.archive-heading h2{font-size:18px}.users-layout,.users-sidebar,.settings-right{display:flex;flex-direction:column;gap:17px}.users-sidebar>*{width:100%}.users-list{padding:0 16px 8px}.user-row{gap:8px;padding:16px 0}.user-row>.avatar{width:29px;height:29px;font-size:9px}.user-info strong{font-size:11px;gap:4px}.user-info p{font-size:10px}.user-info small{font-size:8px;gap:6px}.user-info .role-badge{font-size:8px}.user-actions{gap:3px}.user-actions .icon-button{width:27px}.user-actions .icon-button svg{width:16px}.user-toggle{width:31px;height:18px}.user-toggle span{width:14px;height:14px}.history-heading h2{font-size:18px}.history-heading p{font-size:10px}.owner-shield{width:18px;margin:0 4px}.created-credentials{margin-left:16px;margin-right:16px}.settings-card{padding:21px}.settings-layout{gap:17px}.parent-manager{gap:17px}.share-form-card,.share-list-card{padding:20px 18px}.wide-segment button{font-size:10px;gap:5px;padding:10px 5px}.wide-segment button svg{width:17px}.share-list-card .share-list{display:block}.share-created-buttons .button{font-size:10px;padding:9px 10px}.parent-header{height:72px;padding:20px}.parent-header img{width:138px}.parent-header>span{font-size:9px;gap:5px}.parent-header>span svg{width:13px}.parent-main{padding:22px 16px}.parent-greeting{margin-bottom:25px}.parent-greeting h1{font-size:25px;line-height:1.4;margin:13px 0 10px;letter-spacing:-.9px}.parent-greeting p{font-size:11px;line-height:1.9;padding:0 12px}.parent-greeting .eyebrow{font-size:8px}.parent-student-card{padding:23px 19px;flex-wrap:wrap;gap:14px}.parent-student-card>.avatar{width:48px;height:48px;font-size:17px}.parent-student-card h1{font-size:19px}.parent-student-card p{font-size:10px}.parent-student-card .eyebrow{font-size:8px}.parent-balance{width:100%;padding-top:17px;margin-top:3px;border-top:1px solid #e7eefb;text-align:center}.parent-balance strong{font-size:44px;justify-content:center;margin-top:9px}.parent-balance span{font-size:10px}.parent-schedule{column-gap:15px;row-gap:12px;margin:20px 0 24px}.parent-schedule>div{font-size:10px;gap:5px}.parent-schedule svg{width:15px;height:15px}.parent-stat-grid{gap:9px;margin-bottom:23px}.parent-stat-grid>div{padding:16px 7px;border-radius:13px}.parent-stat-grid strong{font-size:22px;margin:9px 0 5px}.parent-stat-grid span{font-size:9px;line-height:1.6;display:block}.parent-stat-grid svg{width:20px;height:20px}.parent-history{padding:21px 17px}.parent-history .section-heading h2{font-size:16px}.parent-history .section-heading p{font-size:10px}.parent-history-row{gap:9px;padding:16px 0}.parent-history-row strong{font-size:11px}.parent-history-row small{font-size:9px}.parent-history-row>b{font-size:15px}.parent-readonly{font-size:9px;margin-top:25px;gap:7px}.parent-readonly svg{width:17px}.parent-gallery h2{font-size:18px}.parent-gallery figure{width:240px;min-width:240px}.parent-footer{font-size:9px;padding:20px 17px}.parent-footer span{font-size:8px}.parent-unavailable{padding:40px 20px}.parent-unavailable h1{font-size:23px}.modal-backdrop{padding:15px;align-items:center}.modal-panel{padding:21px 19px;max-height:91dvh;border-radius:18px}.modal-heading h2{font-size:20px}.form-grid-three{gap:8px}.form-grid-three label{font-size:11px}.form-grid-three input,.form-grid-three select{padding:10px 7px;font-size:12px}.dialog-form input,.dialog-form select,.dialog-form textarea{font-size:16px!important}.dialog-form label{font-size:11px}.dialog-form .button{font-size:12px}.form-footer{gap:8px}.form-footer .text-button{font-size:10px}.form-footer .button{font-size:11px;padding:9px 12px}.toast{left:16px;right:16px;max-width:none;transform:none;min-width:0;bottom:18px;font-size:11px;gap:8px;padding:13px}.toast-undo{font-size:10px}.login-page{grid-template-columns:1fr}.login-brand-panel{padding:22px 25px 25px;background:linear-gradient(135deg,#102963,#101b35)}.login-logo img{width:145px;height:auto}.login-brand-content{padding:24px 0 8px}.login-kicker{font-size:7px;letter-spacing:2px}.login-brand-content h1{font-size:29px;margin:15px 0 12px;line-height:1.3}.login-brand-content>p{font-size:11px;line-height:1.7}.login-code,.login-brand-footer{display:none}.login-main{padding:29px 25px 40px}.login-card{max-width:450px}.auth-icon{display:none}.login-card>h2{font-size:25px;margin-top:10px}.login-description{font-size:12px;margin-bottom:23px}.login-card .dialog-form{gap:16px}.login-footnote{font-size:9px}.demo-link{font-size:10px}}
@media(max-width:379px){.topbar-heading h1{font-size:19px}.topbar-heading p{max-width:210px;font-size:9px}.profile-avatar{width:30px;height:30px}.stat-tile{gap:7px;padding:13px 10px}.stat-tile>div>span{font-size:9px}.stat-icon{width:34px;height:34px}.stat-tile strong{font-size:25px}.stat-tile small{font-size:7px}.gallery-filter button{font-size:8px;padding:4px 5px}.journal-group-heading h3{font-size:13px}.compact-button span{display:none}.students-table{min-width:375px}.journal-title-row .button{font-size:10px}.section-heading h2{font-size:17px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* Phone journal: every action remains visible without sideways table scrolling. */
@media(max-width:600px){
 .students-table-wrap{overflow:visible}.students-table,.students-table tbody{display:block;min-width:0;width:100%}
 .students-table thead{display:none}.students-table tbody tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 6px;padding:14px 0;border-bottom:1px solid var(--line,#e8edf6)}
 .students-table td{display:block;border:0;padding:0;min-width:0}.students-table .row-number,.students-table .lesson-column{display:none}
 .students-table .student-name-cell{grid-row:1;grid-column:1}.students-table .balance-cell{grid-row:1;grid-column:2;align-self:center;justify-self:end}
 .students-table .student-group{grid-column:1/-1;color:#7890ae;font-size:11px;padding-left:35px}
 .students-table .action-cell{grid-column:1/-1}.student-actions{gap:6px;flex-wrap:wrap;justify-content:flex-start}
 .student-actions button{min-height:36px}.student-actions .point-button{width:40px;min-width:40px;font-size:13px}.student-actions .reward-button,.student-actions .penalty-button{padding:0 9px;font-size:11px}
 .student-actions .reward-button span,.student-actions .penalty-button span{display:inline}.student-actions .small-icon{min-width:28px;padding:0 6px}
 .students-table .student-name-button{font-size:12px;white-space:normal;text-align:left}.students-table .student-name-button>span:last-child{max-width:190px}
 .students-table .avatar{min-width:29px;width:29px;height:29px}.journal-toolbar{gap:7px}.journal-search{min-width:60px}
}
@media(max-width:600px){
 .students-table td{height:auto}
 .student-actions .reward-button,.student-actions .penalty-button{width:auto;min-width:0;flex-shrink:0}
 .student-actions .point-button{flex-shrink:0}
 .student-actions svg{flex-shrink:0}
 .student-name-cell{align-self:center;min-height:30px}
}

/* Compact parent-link settings, no checkbox or variable-expiry controls. */
.share-form-card,.share-list-card{min-width:0;align-self:start}
.share-form-card .dialog-form{min-width:0}
.share-form-card .dialog-form>label{min-width:0}
.share-form-card .dialog-form input,.share-form-card .dialog-form select{box-sizing:border-box;max-width:100%}
.share-access-summary{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:12px 14px;background:#f3f6ff;border:1px solid #e4eafe;border-radius:10px;color:#536789;font-size:12px;line-height:1.5}
.share-access-summary strong{color:#17335d;font-weight:650}
.share-access-summary>span:last-child{color:#7687a3;font-size:11px}
.parent-location{font-size:12px;color:#7383a1;margin:0 0 16px;font-weight:500}
@media(max-width:600px){.share-access-summary{gap:5px 12px;font-size:12px}.share-access-summary>span{flex-basis:100%}.parent-location{font-size:11px}}

/* v2.1 — same layout, quieter chrome and confirmed-action feedback. */
.dashboard-grid.dashboard-clean{grid-template-columns:minmax(0,1fr)}
.main-shell>.topbar{padding-bottom:18px}
.stats-grid .stat-tile{min-height:100px}
.navigation-trail{display:flex;gap:14px;align-items:center;margin:0 0 14px;min-height:32px;color:#7c8bac;font-size:12px}
.navigation-trail nav{display:flex;align-items:center;gap:7px;min-width:0;flex-wrap:wrap}
.navigation-trail nav button{padding:0;background:none;border:0;color:#6482b8;font-size:12px}
.history-buttons{display:flex;gap:4px;padding-right:12px;border-right:1px solid #e2e8f5}
.history-buttons .icon-button{height:30px;width:30px;border:1px solid #e2e9f8;background:#fff;border-radius:9px}
.history-buttons button:disabled{opacity:.3;cursor:default}
.group-tabs{display:flex;align-items:center;gap:6px;margin:0 0 18px;padding:5px;background:#f3f6fc;border:1px solid #eaf0fb;border-radius:13px;overflow-x:auto;scrollbar-width:none}
.group-tabs::-webkit-scrollbar{display:none}
.group-tabs>button{display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;padding:10px 18px;border:0;border-radius:9px;background:transparent;color:#7687a4;font-size:12px;font-weight:600;transition:background .18s,color .18s,box-shadow .18s}
.group-tabs>button:hover{color:#1649e4;background:#eaf0ff}
.group-tabs>button.active{color:#1749ef;background:#fff;box-shadow:0 2px 8px #243e7d0b}
.group-tabs small{padding:2px 6px;background:#edf2ff;color:#6680b2;border-radius:5px;font-size:10px}
.group-tab-panel{min-width:0;animation:tab-enter .2s ease-out}
.group-tab-panel .parent-manager{gap:18px}
.group-parent-pane .share-form-card,.group-parent-pane .share-list-card{padding:18px;border:1px solid #e9eef7;box-shadow:none}
.inline-section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.inline-section-heading h3{font-size:16px;margin:0}
.group-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(185px,1fr));gap:13px}
.group-photo-thumb{border:0;padding:0;border-radius:14px;overflow:hidden;background:#edf2ff;aspect-ratio:4/3}
.group-photo-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .25s}
.group-photo-thumb:hover img{transform:scale(1.025)}
@keyframes tab-enter{from{opacity:.6;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
.sidebar{background:linear-gradient(155deg,#101e3b,#0b152d 70%);border-right:1px solid #1d2e4f}
.sidebar .nav-item{transition:background .18s,color .18s,transform .18s;border-radius:11px}
.sidebar .nav-item:hover:not(.active){background:#ffffff0b;transform:translateX(2px)}
.sidebar .nav-item.active{box-shadow:0 5px 15px #003cff20;background:linear-gradient(115deg,#1259ff,#1642ed)}
.sidebar .brand img{object-fit:contain}
/* Photo ribbon: native touch scrolling, quiet progress, no bulky extra card. */
.gallery-refined{margin-bottom:24px}
.gallery-refined .gallery-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.gallery-title{display:flex!important;align-items:center;gap:9px;color:#657da5}
.gallery-refined .gallery-title h2{display:block;font-size:14px;font-weight:650;color:#5c7298;margin:0}
.gallery-title small{padding:2px 7px;border-radius:6px;background:#e9eef9;font-size:10px;color:#7d90b2}
.gallery-window{position:relative;border-radius:18px}
.gallery-refined .gallery-track{gap:14px;border-radius:18px;scroll-snap-type:x proximity;scrollbar-width:none;overscroll-behavior-x:contain;padding-bottom:0;scroll-behavior:smooth}
.gallery-refined .gallery-track::-webkit-scrollbar{display:none}
.gallery-refined .gallery-item{height:190px;width:292px;min-width:292px;max-width:none;border-radius:18px;overflow:hidden;flex:none;border:1px solid #dfe7f5;scroll-snap-align:start;background:#dde7f5}
.gallery-refined .gallery-image-button{height:100%;width:100%;padding:0;border:0;position:relative}
.gallery-refined .gallery-image-button img{transition:transform .32s ease;display:block;width:100%;height:100%;object-fit:cover}
.gallery-refined .gallery-image-button:hover img{transform:scale(1.035)}
.gallery-refined .gallery-photo-shade{background:linear-gradient(180deg,transparent 35%,#07163033 58%,#071630d9 100%)}
.gallery-refined .gallery-photo-caption{left:15px;right:44px;bottom:15px;display:flex;align-items:flex-start;flex-direction:column;gap:7px}
.gallery-group-chip{display:inline-block;background:#ffffff21;border:1px solid #ffffff30;backdrop-filter:blur(6px);border-radius:6px;padding:3px 7px;font-size:10px!important;font-weight:500}
.gallery-refined .gallery-photo-caption strong{font-size:13px;font-weight:600;max-width:100%;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gallery-refined .gallery-open{right:13px;bottom:15px;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#ffffff1f;border:1px solid #ffffff36;transition:background .2s,transform .2s}
.gallery-refined .gallery-image-button:hover .gallery-open{background:#ffffff3a;transform:translateX(2px)}
.gallery-refined .gallery-delete{top:10px;right:10px;bottom:auto;width:28px;height:28px;border-radius:8px;background:#07163077;backdrop-filter:blur(5px);color:white;opacity:0}
.gallery-refined .gallery-item:hover .gallery-delete,.gallery-refined .gallery-delete:focus-visible{opacity:1}
.gallery-arrow-pair{display:flex;gap:5px}
.gallery-refined .gallery-arrow{display:inline-flex;height:32px;width:32px;border:1px solid #dce5f8;border-radius:10px;background:white;box-shadow:0 2px 3px #123b7810;color:#4466a5}
.gallery-refined .gallery-arrow:disabled{opacity:.28;box-shadow:none;cursor:default}
.gallery-refined .gallery-upload{border-radius:10px;min-height:34px;font-size:11px}
.gallery-refined .gallery-add-empty{height:138px;border-radius:16px;width:100%;flex-basis:100%;border:1px dashed #ccd9f3;background:#eef3ff}
.gallery-pagination{display:flex;align-items:center;gap:10px;margin-top:10px}
.gallery-pagination>span{font-size:10px;color:#8b9dba;font-variant-numeric:tabular-nums;white-space:nowrap}
.gallery-progress{height:3px;max-width:180px;flex:1;border-radius:3px;background:#e3eaf9;overflow:hidden}
.gallery-progress>span{display:block;height:3px;border-radius:3px;background:#91aaff;transition:transform .15s ease}
/* +1: blue like; +2: double like and stars; gift: violet confetti; fine: restrained red. */
.score-anchor{display:inline-flex;position:relative;align-items:center;justify-content:center;isolation:isolate}
.score-motion{position:absolute;left:50%;bottom:60%;width:1px;height:1px;z-index:8;pointer-events:none;--motion-color:#1754ff}
.score-motion-badge{position:absolute;bottom:0;left:0;display:flex;align-items:center;gap:6px;padding:7px 10px;background:var(--motion-color);color:#fff;border:1px solid #ffffff77;border-radius:13px;box-shadow:0 6px 16px #17376c2a;white-space:nowrap;transform:translateX(-50%);animation:score-rise 1.35s ease-out both}
.score-motion-badge strong{font-size:17px;line-height:1.1;font-weight:750}
.score-motion-icon{display:flex;align-items:center}
.motion-plus-one .score-motion-icon{animation:like-pop .62s cubic-bezier(.2,.8,.3,1.3) both}
.motion-plus-two{--motion-color:#1546eb}
.motion-plus-two .score-motion-badge{background:linear-gradient(125deg,#135dff,#6549ff);animation:score-double 1.35s ease-out both}
.motion-plus-two .score-motion-icon{animation:double-like .8s ease-out both}
.bonus-like{position:absolute;left:25px;bottom:26px;color:#6493ff;animation:bonus-rise 1.2s ease-out both}
.motion-gift{--motion-color:#7b4beb}
.motion-gift .score-motion-badge{animation:gift-pop 1.4s ease-out both;background:linear-gradient(120deg,#7850eb,#a94bdc)}
.motion-gift .score-motion-icon{animation:gift-wiggle .65s ease-in-out}
.motion-penalty{--motion-color:#d75b6a}
.motion-penalty .score-motion-badge{animation:score-penalty 1.3s ease-out both;background:#fff0f2;color:#c74657;border-color:#f2c3ca;box-shadow:0 4px 10px #f6c1c44a}
.motion-undo{--motion-color:#7386a2}
.score-particles{position:absolute;left:0;bottom:22px;pointer-events:none}
.score-particles i{position:absolute;width:5px;height:5px;background:#7699ff;border-radius:2px;display:flex;align-items:center;justify-content:center;color:#447dff;animation:confetti 1s ease-out both;animation-delay:calc(var(--i)*15ms);transform:rotate(var(--angle)) translateY(0)}
.motion-gift .score-particles i{background:#a27bf0;border-radius:1px;width:4px;height:7px}
.motion-gift .score-particles i:nth-child(even){background:#eea660}
.motion-plus-two .score-particles i:nth-child(odd){background:transparent;color:#6894ff}
.balance-pulse{display:inline-flex;animation:balance-pop .42s cubic-bezier(.2,.8,.2,1)}
.balance-penalty{animation:fine-pulse .45s ease}
.effect-plus-one td,.effect-plus-two td{animation:row-blue 1.4s ease-out}
.effect-gift td{animation:row-violet 1.4s ease-out}
.effect-penalty td{animation:row-red 1.3s ease-out}
.student-actions .point-button{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:45px;width:auto;padding:0 8px;transition:background .15s,transform .12s,border-color .15s}
.student-actions button:active:not(:disabled){transform:scale(.94)}
.point-button:hover:not(:disabled){background:#e6edff;border-color:#8cacff}
.toast-gift{border-left:4px solid #8d5bdf}.toast-penalty{border-left:4px solid #dc6b78}.toast-plus-one,.toast-plus-two{border-left:4px solid #386fff}
.toast-gift>svg{color:#8d5bdf}.toast-penalty>svg{color:#dc6b78}
@keyframes score-rise{0%{opacity:0;transform:translate(-50%,8px) scale(.7)}16%{opacity:1;transform:translate(-50%,-12px) scale(1.08)}32%{transform:translate(-50%,-16px) scale(1)}72%{opacity:1}100%{opacity:0;transform:translate(-50%,-42px) scale(.95)}}
@keyframes score-double{0%{opacity:0;transform:translate(-50%,5px) scale(.6) rotate(-8deg)}18%{opacity:1;transform:translate(-50%,-18px) scale(1.14) rotate(3deg)}35%{transform:translate(-50%,-20px) scale(1) rotate(0)}75%{opacity:1}100%{opacity:0;transform:translate(-50%,-47px) scale(.96)}}
@keyframes like-pop{0%{transform:rotate(-24deg) scale(.6)}50%{transform:rotate(10deg) scale(1.2)}100%{transform:none}}
@keyframes double-like{0%,100%{transform:rotate(0)}30%{transform:rotate(-20deg) scale(1.2)}60%{transform:rotate(8deg)}}
@keyframes bonus-rise{0%{opacity:0;transform:translate(0,8px) scale(.4)}30%{opacity:1;transform:translate(8px,-14px) scale(1.3) rotate(12deg)}100%{opacity:0;transform:translate(15px,-37px) scale(.8)}}
@keyframes gift-pop{0%{opacity:0;transform:translate(-50%,8px) scale(.5)}18%{opacity:1;transform:translate(-50%,-12px) scale(1.15)}36%{transform:translate(-50%,-16px) scale(1)}76%{opacity:1}100%{opacity:0;transform:translate(-50%,-37px) scale(.95)}}
@keyframes gift-wiggle{0%,100%{transform:rotate(0)}25%{transform:rotate(-15deg)}55%{transform:rotate(12deg)}75%{transform:rotate(-5deg)}}
@keyframes score-penalty{0%{opacity:0;transform:translate(-50%,-9px) scale(.9)}15%{opacity:1;transform:translate(-50%,-14px) scale(1)}65%{opacity:1}100%{opacity:0;transform:translate(-50%,5px) scale(.95)}}
@keyframes confetti{0%{opacity:0;transform:rotate(var(--angle)) translateY(0) scale(.4)}22%{opacity:1}100%{opacity:0;transform:rotate(var(--angle)) translateY(calc(-1 * var(--distance))) rotate(100deg) scale(.7)}}
@keyframes balance-pop{0%,100%{transform:scale(1)}40%{transform:scale(1.15)}}
@keyframes fine-pulse{0%,100%{transform:translateX(0)}25%{transform:translateX(-2px)}60%{transform:translateX(2px)}}
@keyframes row-blue{0%,75%{background-color:#f1f5ff}100%{background-color:transparent}}
@keyframes row-violet{0%,65%{background-color:#f7f2ff}100%{background-color:transparent}}
@keyframes row-red{0%,65%{background-color:#fff5f5}100%{background-color:transparent}}
/* One child, multiple courses. */
.student-course-count{display:block;font-size:10px;font-weight:500;color:#8b9ab2;margin-top:3px}
.student-course-tags{display:flex;flex-wrap:wrap;gap:5px}
.student-course-tags button{padding:4px 6px;border:1px solid #e1e9fa;background:#f3f6ff;border-radius:6px;color:#607cb5;font-size:10px;white-space:nowrap}
.student-course-tags button.archived{color:#9aa4b7;background:#f6f7fa}
.identity-summary{display:flex;gap:12px;align-items:flex-start;padding:15px;background:#f1f5ff;border:1px solid #dfe7fa;border-radius:12px;color:#365fbe}
.identity-summary>svg{flex-shrink:0}.identity-summary p{font-size:12px;line-height:1.6;color:#7688a9}.identity-summary b{font-size:14px}
.identity-confirm{display:flex!important;flex-direction:row!important;align-items:flex-start;gap:10px!important;font-size:13px!important}
.identity-confirm input{flex:0 0 18px!important;width:18px!important;height:18px!important;min-height:18px!important;margin:0!important;accent-color:#2455f8}
.identity-confirm span{line-height:1.5}.identity-form>p{line-height:1.6}
.duplicate-hint{padding:13px;border:1px solid #d7e3ff;background:#f4f7ff;border-radius:10px;display:flex;flex-direction:column;gap:8px;font-size:12px}
.duplicate-hint small{color:#8a99b3;line-height:1.5}.duplicate-hint .text-button{text-align:left;justify-content:flex-start;white-space:normal}
.profile-course-select{margin:14px 0;text-align:left}.profile-course-select label{display:block;font-size:11px;color:#8a9bb5}.profile-course-select select{width:100%;font-size:12px;margin-top:6px;min-height:40px;border:1px solid #dce6fa;border-radius:10px;background:#f8faff;padding:9px;color:#48608b}
.merge-profile{font-size:11px;margin:16px auto 0;white-space:normal}
.parent-courses{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:13px;margin:16px 0 23px}
.parent-course{display:flex;align-items:center;gap:12px;padding:18px;border-radius:15px;min-width:0}.parent-course>svg{color:#3d70ec;flex-shrink:0}.parent-course>div{flex:1;min-width:0}.parent-course strong{display:block;font-size:14px}.parent-course span,.parent-course small{display:block;font-size:11px;color:#8b9ab3;line-height:1.7}.parent-course b{font-size:18px;color:#3c66bf;text-align:right}.parent-course b small{font-size:9px;font-weight:500}.parent-course.course-archived{opacity:.66}
.parent-section-tabs{display:flex;gap:6px;padding:5px;margin:22px 0 16px;background:#e9eef9;border-radius:12px;width:max-content;max-width:100%}.parent-section-tabs button{display:flex;align-items:center;gap:8px;padding:9px 16px;border:0;border-radius:8px;background:transparent;color:#8394b2;font-size:13px}.parent-section-tabs button.active{background:white;color:#2055dc;box-shadow:0 2px 7px #1936760c}.parent-section-tabs small{font-size:10px}
.parent-photo-placeholder{display:flex;min-height:160px;align-items:center;justify-content:center;gap:8px;background:#eaf0fa;color:#91a1b9;font-size:11px}.parent-photo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.parent-photo{margin:0;overflow:hidden;border-radius:15px;background:white;border:1px solid #e0e7f4}.parent-photo img{width:100%;height:220px;object-fit:cover;display:block}.parent-photo figcaption{padding:12px;font-size:12px;color:#7184a3}
.parent-recovery{max-width:440px;margin:20px auto 0;text-align:left}.group-parent-note{font-size:12px;color:#8797b1;line-height:1.6}
@media(max-width:800px){.gallery-refined .gallery-item{width:240px;min-width:240px;height:165px}.group-parent-pane .parent-manager{grid-template-columns:1fr}.group-tabs button{padding:9px 14px}.gallery-title h2{font-size:12px!important}.sidebar .nav-item{min-height:42px}}
@media(max-width:600px){.navigation-trail{font-size:10px;margin-bottom:9px;gap:9px}.navigation-trail nav button{font-size:10px}.gallery-refined .gallery-heading{gap:7px}.gallery-refined .gallery-controls{gap:6px}.gallery-refined .gallery-title h2{font-size:11px!important}.gallery-title{gap:5px}.gallery-title small{display:none}.gallery-refined .gallery-arrow-pair{display:none}.gallery-refined .gallery-item{width:230px;min-width:230px;height:158px}.gallery-refined .gallery-upload{width:30px;height:30px;min-height:30px;padding:0;justify-content:center}.gallery-refined .gallery-track{gap:12px}.gallery-refined .gallery-delete{opacity:1}.gallery-refined .gallery-photo-caption{left:12px;bottom:12px}.gallery-refined .gallery-photo-caption strong{font-size:12px}.gallery-pagination{margin-top:8px}.gallery-refined{margin-bottom:18px}.group-tabs{gap:3px;padding:4px;margin-bottom:14px}.group-tabs>button{padding:9px 10px;font-size:11px;gap:5px;flex:1}.group-tabs small{font-size:9px;padding:1px 4px}.group-tabs>button svg{width:15px}.group-parent-pane .share-form-card,.group-parent-pane .share-list-card{padding:13px}.group-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.student-actions .point-button{min-width:48px;gap:5px}.score-motion-badge{padding:6px 8px}.score-motion-badge strong{font-size:15px}.student-course-tags{padding-left:0}.students-table .student-group{padding-left:35px}.parent-courses{grid-template-columns:1fr;margin:14px 0}.parent-course{padding:15px}.parent-photo-grid{grid-template-columns:1fr}.parent-photo img{height:220px}.identity-summary{padding:12px}.parent-section-tabs{margin-top:18px}.main-content .journal-title-row{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){.score-motion-badge,.score-motion-icon,.bonus-like,.score-particles i,.balance-pulse,.effect-plus-one td,.effect-plus-two td,.effect-gift td,.effect-penalty td,.group-tab-panel{animation:none!important;transition:none!important}.score-motion-badge{opacity:1;transform:translate(-50%,-8px)}.bonus-like,.score-particles{display:none}.gallery-refined .gallery-track{scroll-behavior:auto}.gallery-refined .gallery-image-button:hover img,.sidebar .nav-item:hover:not(.active){transform:none}}

/* 2.2: a single persistent wallet badge; decorative emoji feedback is absolutely positioned. */
.score-anchor>.balance-pill{position:relative;z-index:1;font-variant-numeric:tabular-nums}
.emoji-motion{z-index:15;isolation:isolate}
.emoji-motion .score-motion-badge{gap:8px;padding:6px 11px 6px 8px;border-radius:16px;border:1px solid #d3e0ff;background:#fff;box-shadow:0 7px 22px #1a427c24;color:#2353cc;animation:emoji-float 1.6s cubic-bezier(.2,.7,.3,1) both}
.emoji-motion .score-emoji{display:inline-block;font-family:'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',sans-serif;font-size:29px;line-height:1.1;animation:emoji-happy-pop .6s ease-out both}
.emoji-motion .score-motion-badge strong{font-size:17px}
.emoji-motion.emoji-variant-1 .score-emoji{animation-name:emoji-happy-tilt}
.emoji-motion.emoji-variant-2 .score-emoji{animation-name:emoji-happy-hop}
.emoji-motion.motion-plus-two .score-motion-badge{background:linear-gradient(120deg,#edf4ff,#f3edff);border-color:#b9ceff;animation-name:emoji-double-float}
.emoji-motion.motion-plus-two .score-emoji{font-size:34px}
.emoji-motion.motion-gift .score-motion-badge{background:linear-gradient(120deg,#f7edff,#fff0fa);color:#7b39b1;border-color:#e3c9fa;animation-name:emoji-gift-float}
.emoji-motion.motion-gift .score-emoji{font-size:32px;animation:gift-wiggle .65s ease-in-out}
.emoji-motion.motion-penalty .score-motion-badge{background:#fff5f6;color:#b74f64;border-color:#f0cad3;animation:emoji-sad-float 1.6s ease-out both}
.emoji-motion.motion-penalty .score-emoji{animation:emoji-sad-nod .65s ease-in-out}
.emoji-motion.motion-undo .score-motion-badge{background:#f5f7fb;color:#64748b;border-color:#dce3ee}
.emoji-particles{position:absolute;left:0;bottom:24px;pointer-events:none}
.emoji-particles>span{position:absolute;left:0;bottom:0;line-height:1;font-size:17px;font-family:'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',sans-serif;animation:emoji-sprinkle 1.45s ease-out both;animation-delay:calc(var(--i)*45ms)}
@keyframes emoji-float{0%{opacity:0;transform:translate(-50%,4px) scale(.65)}14%{opacity:1;transform:translate(-50%,-14px) scale(1.08)}28%{transform:translate(-50%,-18px) scale(1)}72%{opacity:1}100%{opacity:0;transform:translate(-50%,-46px) scale(.95)}}
@keyframes emoji-double-float{0%{opacity:0;transform:translate(-50%,5px) scale(.6) rotate(-6deg)}16%{opacity:1;transform:translate(-50%,-22px) scale(1.14) rotate(3deg)}32%{transform:translate(-50%,-24px) scale(1)}76%{opacity:1}100%{opacity:0;transform:translate(-50%,-55px) scale(.94)}}
@keyframes emoji-gift-float{0%{opacity:0;transform:translate(-50%,6px) scale(.6)}16%{opacity:1;transform:translate(-50%,-16px) scale(1.12)}32%{transform:translate(-50%,-20px) scale(1)}75%{opacity:1}100%{opacity:0;transform:translate(-50%,-43px) scale(.94)}}
@keyframes emoji-sad-float{0%{opacity:0;transform:translate(-50%,-10px) scale(.85)}18%{opacity:1;transform:translate(-50%,-23px) scale(1)}72%{opacity:1}100%{opacity:0;transform:translate(-50%,-5px) scale(.93)}}
@keyframes emoji-happy-pop{0%{transform:scale(.45) rotate(-12deg)}55%{transform:scale(1.18) rotate(7deg)}100%{transform:none}}
@keyframes emoji-happy-tilt{0%{transform:rotate(-20deg) scale(.6)}40%{transform:rotate(14deg) scale(1.1)}70%{transform:rotate(-7deg)}100%{transform:none}}
@keyframes emoji-happy-hop{0%{transform:translateY(6px) scale(.6)}45%{transform:translateY(-6px) scale(1.08)}70%{transform:translateY(2px)}100%{transform:none}}
@keyframes emoji-sad-nod{0%{transform:rotate(0)}45%{transform:rotate(8deg) translateY(3px)}100%{transform:none}}
@keyframes emoji-sprinkle{0%{opacity:0;transform:translate(-50%,0) scale(.4)}23%{opacity:1}70%{opacity:.9}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--turn)) scale(.85)}}
/* Public group ranking, kept separate from the editable classroom table. */
.parent-ranking{padding:26px 28px;overflow:hidden}
.parent-ranking-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}
.parent-ranking-heading>div{display:flex;align-items:center;gap:12px}
.parent-ranking-heading h2{font-size:23px;letter-spacing:-.6px;margin:0}
.parent-ranking-heading>span{color:#7b8eae;font-size:13px;white-space:nowrap}
.parent-ranking-caption{font-size:12px;line-height:1.7;color:#7b8eae;margin:13px 0 22px}
.parent-ranking-table{width:100%;border-collapse:collapse;font-size:14px;table-layout:auto}
.parent-ranking-table th{font-size:11px;font-weight:600;color:#7b8eae;text-align:right;padding:13px 10px;background:#f4f7fe;white-space:nowrap}
.parent-ranking-table th:first-child{text-align:center;border-radius:10px 0 0 10px;width:50px}
.parent-ranking-table th:nth-child(2){text-align:left}
.parent-ranking-table th:last-child{border-radius:0 10px 10px 0}
.parent-ranking-table td{padding:17px 10px;border-bottom:1px solid #edf1fa;text-align:right;font-variant-numeric:tabular-nums}
.parent-ranking-table tr:last-child td{border-bottom:0}
.parent-ranking-table .parent-rank-name{display:flex;align-items:center;text-align:left;gap:10px;min-width:180px}
.parent-rank-name>strong{font-size:13px;line-height:1.5;word-break:break-word;max-width:330px}
.parent-rank-name .avatar{width:32px;height:32px;flex:none;font-size:11px}
.parent-ranking-table .parent-rank-place{text-align:center;color:#8799b5}
.parent-medal{font-family:'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',sans-serif;font-size:25px}
.parent-rank-earned>span{color:#239666;font-weight:600}
.parent-rank-penalties>span{color:#c56d7c;font-weight:600}
.parent-rank-gifts>span{color:#8d75b8}
.parent-rank-row.rank-1{background:linear-gradient(90deg,#fffdf8,white)}
.group-score-stats>div:nth-child(2)>span:first-child{font-size:24px;line-height:1}
.parent-ranking-table .balance-pill{display:inline-flex;gap:6px;white-space:nowrap}
@media(max-width:700px){
 .parent-ranking{padding:18px 14px}
 .parent-ranking-heading{gap:9px}.parent-ranking-heading h2{font-size:18px}.parent-ranking-heading>span{font-size:11px}
 .parent-ranking-heading .section-icon{width:33px;height:33px}.parent-ranking-heading>div{gap:8px}
 .parent-ranking-caption{font-size:10px;margin:11px 0 15px}
 .parent-ranking-table,.parent-ranking-table tbody{display:block;width:100%}
 .parent-ranking-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
 .parent-ranking-table tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:8px;row-gap:9px;position:relative;padding:15px 0;border-bottom:1px solid #e9eff9}
 .parent-ranking-table tr:last-child{border-bottom:0}
 .parent-ranking-table td{display:block;border:0;padding:0;text-align:left;min-width:0}
 .parent-ranking-table .parent-rank-place{position:absolute;top:14px;left:0;width:27px;text-align:center;font-size:12px}
 .parent-medal{font-size:22px}
 .parent-ranking-table .parent-rank-name{grid-column:1/3;grid-row:1;display:flex;padding-left:32px;min-width:0;gap:6px;align-self:center}
 .parent-rank-name .avatar{display:none}.parent-rank-name>strong{font-size:12px;max-width:none}
 .parent-ranking-table .parent-rank-balance{grid-column:3;grid-row:1;text-align:right;align-self:center}
 .parent-ranking-table .parent-rank-earned{grid-column:1;grid-row:2;padding-left:32px}
 .parent-ranking-table .parent-rank-penalties{grid-column:2;grid-row:2;text-align:center}
 .parent-ranking-table .parent-rank-gifts{grid-column:3;grid-row:2;text-align:right}
 .parent-ranking-table td[data-label]:not(.parent-rank-balance)::before{content:attr(data-label);display:block;color:#8b9bb5;font-size:9px;margin-bottom:4px}
 .parent-ranking-table td[data-label]>span{font-size:12px}
 .parent-ranking-table .balance-pill{padding:5px 8px;font-size:13px;gap:4px}
 .parent-ranking-table .balance-pill svg{width:12px;height:12px}
 .emoji-motion .score-emoji{font-size:27px}.emoji-motion.motion-plus-two .score-emoji{font-size:31px}
}
@media(prefers-reduced-motion:reduce){
 .emoji-motion .score-motion-badge,.emoji-motion .score-emoji,.emoji-particles>span{animation:none!important;transition:none!important}
 .emoji-motion .score-motion-badge{opacity:1;transform:translate(-50%,-12px)}.emoji-particles{display:none}
}
