html,body,#root{height:auto}body{background:var(--bg);padding:0;display:block;overflow:auto}.page{min-height:100vh;padding:var(--large);max-width:1180px;margin:0 auto}.center{justify-content:center;align-items:center;display:flex}.stack{gap:var(--small);margin-bottom:var(--large);flex-direction:column;display:flex}.row{align-items:center;gap:var(--medium);display:flex}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.section-title{font-size:var(--fs-lg);color:var(--primary);text-transform:uppercase;font-weight:700}.section-head{align-items:baseline;gap:var(--medium);display:flex}.section-sub{font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.05em;opacity:.55}.section-link{align-items:center;gap:var(--small);font-size:var(--fs-sm);text-transform:uppercase;color:var(--primary);margin-left:auto;font-weight:700;display:inline-flex}.subsection-title{font-size:var(--fs-md);text-transform:uppercase;letter-spacing:.5px;color:var(--primary);font-weight:700}.muted{color:var(--black);opacity:.6}.hint{font-size:var(--fs-sm);color:var(--black);opacity:.6;line-height:1.4}.topbar{gap:var(--small);flex-direction:column;display:flex}.topbar__bar{justify-content:space-between;align-items:start;gap:var(--medium);display:flex}.topbar__title{align-items:baseline;gap:var(--small);margin:0;display:flex}.topbar__actions{align-items:center;gap:var(--medium);display:flex}.topbar__student{text-transform:uppercase;color:var(--black);font-size:7rem;font-weight:300;line-height:.9}.subnav{gap:var(--small);margin-top:var(--medium);padding-bottom:var(--medium);border-bottom:2px solid var(--border);display:flex}.subnav-link{align-items:center;gap:var(--small);padding:var(--small) var(--medium);font-size:var(--fs-sm);text-transform:uppercase;color:var(--primary);border-radius:var(--radius-sm);border:2px solid #0000;font-weight:700;transition:all .15s;display:inline-flex}.subnav-link:hover{background:var(--white);text-decoration:none}.subnav-link.active{background:var(--primary);color:var(--white)}.back-link{align-items:center;gap:var(--small);font-size:var(--fs-sm);text-transform:uppercase;color:var(--primary);font-weight:700;display:inline-flex}.form-group{gap:var(--small);flex-direction:column;display:flex}.label{font-size:var(--fs-sm);text-transform:uppercase;color:var(--primary);margin-bottom:var(--small);font-weight:700;display:block}.input{width:100%;padding:var(--small) var(--medium);font-size:var(--fs-md);border:2px solid var(--border);border-radius:var(--radius-sm);background:var(--white);color:var(--black);transition:border-color .15s}.input:focus{border-color:var(--accent);outline:none}.error{font-size:var(--fs-sm);color:var(--accent)}.login-card{background:var(--white);border:2px solid var(--border);border-radius:var(--radius-md);width:100%;max-width:340px;padding:var(--large)}.empty-state{padding:var(--large);background:var(--white);border:2px dashed var(--border);border-radius:var(--radius-md);text-align:center;color:var(--black);opacity:.7}.tile-icon{background:var(--bg);color:var(--primary);border-radius:50%;flex-shrink:0;place-items:center;display:grid}.tile-icon--soft{background:var(--bg);color:var(--primary);border-radius:50%}.tools{gap:var(--large);grid-template-columns:repeat(3,1fr);display:grid}.tool{text-align:center;align-items:center;gap:var(--medium);padding:calc(var(--large) * 1.4) var(--large);background:var(--white);border:2px solid var(--border);border-radius:var(--radius-md);color:var(--black);flex-direction:column;transition:transform .15s,background .15s;display:flex}.tool:hover{text-decoration:none;transform:translateY(-3px)}.tool .tile-icon{width:104px;height:104px;font-size:52px}.tool__name{font-size:var(--fs-lg);color:var(--black);text-transform:uppercase;font-weight:700}.tool__desc{font-size:var(--fs-sm);opacity:.6;line-height:1.35}.activities{gap:var(--medium);grid-template-columns:repeat(auto-fill,minmax(158px,1fr));display:grid}.activity{text-align:center;align-items:center;gap:var(--medium);padding:var(--large) var(--medium);background:var(--white);border:2px solid var(--border);border-radius:var(--radius-md);color:var(--black);flex-direction:column;transition:transform .15s,background .15s;display:flex}.activity:hover{text-decoration:none;transform:translateY(-3px)}.activity .tile-icon{width:64px;height:64px;font-size:36px}.activity__name{font-size:var(--fs-md);text-transform:uppercase;font-weight:700}.overview-grid{gap:var(--large);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.overview-tile{align-items:center;gap:var(--medium);padding:var(--large);background:var(--white);border:2px solid var(--border);border-radius:var(--radius-md);color:var(--black);transition:transform .15s,box-shadow .15s;display:flex}.overview-tile:hover{text-decoration:none;transform:translateY(-2px);box-shadow:0 6px 20px #4e4eff26}.overview-tile-icon{background:var(--bg);border-radius:var(--radius-sm);width:56px;height:56px;color:var(--primary);justify-content:center;align-items:center;display:flex}.overview-tile-count{font-size:var(--fs-xl);color:var(--primary);font-weight:700;line-height:1}.overview-tile-label{font-size:var(--fs-sm);text-transform:uppercase;color:var(--black);opacity:.7;font-weight:700}.overview-tile-arrow{color:var(--primary);opacity:.5;margin-left:auto}.table{border-collapse:collapse;background:var(--white);border:2px solid var(--border);border-radius:var(--radius-md);width:100%;overflow:hidden}.table th,.table td{padding:var(--medium);text-align:left;font-size:var(--fs-md);border-bottom:1px solid var(--bg)}.table th{font-size:var(--fs-sm);text-transform:uppercase;color:var(--primary);background:var(--bg);font-weight:700}.table tr:last-child td{border-bottom:none}.chip-list{gap:var(--small);flex-wrap:wrap;padding:0;list-style:none;display:flex}.chip{align-items:center;gap:var(--small);padding:var(--small) var(--medium);font-size:var(--fs-sm);background:var(--white);border:2px solid var(--border);border-radius:var(--radius-sm);display:inline-flex}.chip-remove{border-radius:var(--radius-sm);width:18px;height:18px;color:var(--primary);background:0 0;border:none;justify-content:center;align-items:center;transition:all .15s;display:inline-flex}.chip-remove:hover{background:var(--accent);color:var(--white)}.badge{padding:2px var(--small);font-size:var(--fs-sm);text-transform:uppercase;border-radius:var(--radius-sm);letter-spacing:.5px;font-weight:700;display:inline-block}.badge.active{background:var(--secondary);color:var(--primary)}.badge.retired{background:var(--bg);color:var(--black);opacity:.6}.library-toolbar{justify-content:flex-end;display:flex}.library-grid{gap:var(--large);grid-template-columns:repeat(auto-fill,minmax(160px,1fr));display:grid}.library-card{background:var(--white);border:2px solid var(--border);border-radius:var(--radius-md);flex-direction:column;transition:transform .15s,box-shadow .15s;display:flex;overflow:hidden}.library-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px #4e4eff26}.library-thumb{aspect-ratio:960/720;background:var(--white);position:relative}.library-thumb img{object-fit:contain;width:100%;height:100%;display:block;position:absolute;inset:0}.library-thumb-empty{justify-content:center;align-items:center;gap:var(--small);font-size:var(--fs-sm);color:var(--primary);opacity:.6;flex-direction:column;display:flex;position:absolute;inset:0}.library-card-footer{gap:var(--small);padding:var(--medium);border-top:2px solid var(--bg);flex-direction:column;display:flex}.library-card-name{font-size:var(--fs-md);color:var(--black);white-space:nowrap;text-overflow:ellipsis;font-weight:700;overflow:hidden}.library-card-row{align-items:center;gap:var(--small);display:flex}.library-card-date{font-size:var(--fs-sm)}.library-card-actions{align-items:center;gap:var(--small);margin-left:auto;display:flex}.library-action{border:2px solid var(--border);border-radius:var(--radius-sm);width:30px;height:30px;color:var(--primary);background:var(--white);flex-shrink:0;justify-content:center;align-items:center;transition:all .15s;display:inline-flex}.library-action:hover{background:var(--primary);color:var(--white);text-decoration:none}.library-action.danger{border-color:var(--accent);color:var(--accent)}.library-action.danger:hover{background:var(--accent);color:var(--white)}
