:root{color:#17201d;font-synthesis:none;text-rendering:optimizelegibility;background:#edf0eb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.65}button:focus-visible,input:focus-visible{outline-offset:2px;outline:3px solid #f4a261}h1,h2,h3,p{margin-top:0}.app-shell{min-height:100vh}.app-header{color:#f8faf7;background:#183a34;justify-content:space-between;align-items:center;gap:1rem;min-height:58px;padding:.65rem max(1rem,50vw - 490px);display:flex}.home-button,.user-menu button,.back-button{color:inherit;background:0 0;border:0}.app-navigation{align-items:center;gap:.9rem;display:flex}.app-brand{letter-spacing:-.02em;font-weight:800}.home-button{border-radius:.45rem;padding:.4rem .55rem;font-size:.82rem;font-weight:700}.home-button:hover,.home-button[aria-current=page]{background:#ffffff24}.user-menu{align-items:center;gap:.75rem;font-size:.82rem;display:flex}.user-menu button{border:1px solid #ffffff59;border-radius:.5rem;padding:.45rem .65rem}main{width:min(100% - 2rem,980px);margin:0 auto;padding:2rem 0 4rem}.status-page,.login-page{place-items:center;min-height:100vh;display:grid}.login-form{background:#fff;border:1px solid #cfd6cf;border-radius:1rem;gap:1rem;width:min(100%,420px);padding:2rem;display:grid;box-shadow:0 18px 45px #1a312a1a}.login-form label{gap:.35rem;font-weight:650;display:grid}.login-form input,.search-input-wrap input{color:#17201d;background:#fff;border:1px solid #aebbb2;border-radius:.65rem;width:100%;min-height:48px;padding:.7rem .85rem;font-size:16px}.login-form>button{color:#fff;background:#1f6658;border:0;border-radius:.65rem;min-height:48px;font-weight:750}.error{color:#a11b1b}.home-page{max-width:650px;margin:5vh auto 0}.eyebrow,.entity-label,.result-count{color:#507068;letter-spacing:.1em;text-transform:uppercase;font-size:.74rem;font-weight:800}.home-page h1{letter-spacing:-.055em;margin-bottom:.5rem;font-size:clamp(2.2rem,7vw,4rem)}.home-page__intro{color:#5c6863;margin-bottom:2rem}.mode-grid{gap:.8rem;display:grid}.mode-card{color:#17201d;text-align:left;background:#fff;border:1px solid #cbd5ce;border-radius:1rem;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;width:100%;min-height:94px;padding:1rem 1.2rem;display:grid;box-shadow:0 10px 30px #233d3514}.mode-card:hover{border-color:#1f6658;transform:translateY(-1px)}.mode-card__icon{color:#fff;background:#1f6658;border-radius:.8rem;place-items:center;width:48px;height:48px;font-size:1.7rem;display:grid}.mode-card__icon--attendance{background:#526f43}.mode-card strong,.mode-card small{display:block}.mode-card strong{margin-bottom:.25rem;font-size:1.15rem}.mode-card small{color:#64716c}.search-page,.detail-page{max-width:760px;margin:0 auto}.search-toolbar{z-index:5;background:linear-gradient(#edf0eb 85%,#0000);padding:0 0 1rem;position:sticky;top:0}.search-toolbar__topline{align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.search-toolbar h1{margin:0;font-size:1.45rem}.back-button{color:#1f6658;padding:.5rem 0;font-weight:750}.search-input-wrap{position:relative}.search-input-wrap>span{color:#64716c;position:absolute;top:50%;left:1rem;transform:translateY(-50%)}.search-input-wrap input{border-width:2px;border-color:#759188;min-height:56px;padding-left:2.6rem;padding-right:.85rem;box-shadow:0 8px 24px #233d3517}.empty-state{color:#68746f;text-align:center;margin:2rem 0;padding:2rem 1rem}.result-list{gap:.6rem;transition:opacity .1s;display:grid}.result-list--updating{opacity:.62}.result-count{margin:.2rem 0}.keyboard-help{color:#75817c;margin:-.1rem 0 .25rem;font-size:.78rem}.result-card{color:#17201d;text-align:left;background:#fff;border:1px solid #d1d9d3;border-left:5px solid #71847c;border-radius:.75rem;gap:.22rem;width:100%;padding:.9rem 1rem .9rem 1.25rem;display:grid}.result-card:hover{background:#fbfcfa;border-color:#789087}.result-card--active{background:#f5faf7;border-color:#1f6658;box-shadow:0 0 0 2px #1f665833}.result-card--student{border-left-color:#2878a5}.result-card--teacher{border-left-color:#a05b20}.result-card--course{border-left-color:#6d51a5}.result-card--project{border-left-color:#278065}.result-card--room{border-left-color:#8a7042}.result-card__subtitle{color:#64716c;text-overflow:ellipsis;white-space:nowrap;font-size:.87rem;overflow:hidden}.result-card__context{color:#244e44;font-size:.88rem;font-weight:620}.detail-header{z-index:4;background:#edf0eb;padding-bottom:1rem;position:sticky;top:0}.detail-header .entity-label{margin-top:.7rem;display:block}.detail-header h1{letter-spacing:-.035em;margin:.25rem 0 0;font-size:clamp(1.75rem,6vw,2.7rem)}.detail-section{background:#fff;border:1px solid #d1d9d3;border-radius:.8rem;margin-bottom:.8rem;padding:1rem}.detail-section h2{margin-bottom:.8rem;font-size:1.1rem}.detail-section h3{margin-bottom:.5rem;font-size:.95rem}.detail-fields{margin:0}.detail-fields>div{border-top:1px solid #e7ebe7;grid-template-columns:minmax(110px,.35fr) 1fr;gap:1rem;padding:.55rem 0;display:grid}.detail-fields dt{color:#66736d}.detail-fields dd{overflow-wrap:anywhere;margin:0}.detail-note,.muted{color:#68746f;font-size:.88rem}.related-list{gap:.5rem;display:grid}.related-list button{color:#17201d;text-align:left;background:#f7f9f6;border:1px solid #dce2dd;border-radius:.55rem;gap:.2rem;padding:.75rem;display:grid}.related-list button span{color:#68746f;font-size:.85rem}.attendance-page{max-width:980px;margin:0 auto}.attendance-page,.attendance-page *,.room-info-overlay,.room-info-overlay *{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.attendance-toolbar{z-index:5;background:#edf0eb;justify-content:space-between;align-items:end;gap:1rem;padding-bottom:.9rem;display:flex;position:sticky;top:0}.attendance-toolbar h1{margin:.2rem 0 0;font-size:clamp(1.75rem,6vw,2.7rem)}.attendance-reset{color:#28332f;background:#fff;border:1px solid #9eaaa3;border-radius:.55rem;min-height:42px;padding:.55rem .85rem;font-weight:700}.attendance-summary{color:#55635d;flex-wrap:wrap;gap:.5rem 1rem;margin-bottom:.8rem;font-size:.84rem;font-weight:650;display:flex}.attendance-message,.attendance-sync{color:#65716c}.attendance-sync{font-size:.86rem}.attendance-grid{grid-template-columns:1fr;gap:.55rem;display:grid}.attendance-card{background:#fff;border:1px solid #d1d9d3;border-left:4px solid #0000;border-radius:.7rem;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.65rem;min-width:0;padding:.7rem;transition:background-color .1s,border-color .1s;display:grid}.attendance-card--present{background:#edf7ee;border-color:#b8cfba}.attendance-card--absent{background:#faeeee;border-color:#d9bbbb}.attendance-card--without-accommodation{filter:saturate(.82);border-left-color:#8a8471}.attendance-card__student{min-width:0;color:inherit;text-align:left;background:0 0;border:0;gap:.1rem;padding:0;display:grid}.attendance-card__student:hover strong,.attendance-card__student:focus-visible strong{text-decoration:underline}.attendance-card__student:active{color:inherit;background:0 0}.attendance-card__student span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.attendance-card__student strong{overflow-wrap:anywhere}.attendance-card__student span{color:#67736e;font-size:.8rem}.attendance-card__student small{color:#746e5d;font-size:.72rem;font-weight:700}.attendance-card__actions{gap:.35rem;display:flex}.attendance-card__actions button{color:#35423d;background:#ffffffb8;border:1px solid #bcc6c0;border-radius:.55rem;width:42px;height:42px;font-size:1.25rem;font-weight:800}.attendance-card__actions button:first-child[aria-pressed=true]{color:#285f31;background:#dceedd;border-color:#6f9b72}.attendance-card__actions button:last-child[aria-pressed=true]{color:#813b3b;background:#f3dddd;border-color:#aa7373}.room-info-overlay{z-index:50;background:#121e1a6b;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.room-info-dialog{background:#fff;border-radius:.9rem;width:min(100%,420px);padding:1.25rem;position:relative;box-shadow:0 24px 70px #0f231d4d}.room-info-dialog h2{margin-bottom:1rem}.room-info-dialog dl{gap:.75rem;margin:0;display:grid}.room-info-dialog dl>div{gap:.15rem;display:grid}.room-info-dialog dt{color:#68746f;font-size:.8rem}.room-info-dialog dd{margin:0;font-weight:700}.room-info-dialog__close{color:#35423d;background:#edf0eb;border:0;border-radius:50%;width:38px;height:38px;font-size:1.25rem;position:absolute;top:.6rem;right:.6rem}@media (width<=600px){.app-header{min-height:50px;padding:.45rem .7rem}.user-menu span{display:none}.app-navigation{gap:.35rem}.app-brand{font-size:.86rem}main{width:100%;padding:.75rem .65rem 2rem}.home-page{margin-top:3vh}.home-page h1{font-size:2.5rem}.search-toolbar,.detail-header,.attendance-toolbar{margin:-.75rem -.65rem 0;padding:.65rem .65rem .75rem}.search-toolbar__topline{margin-bottom:.45rem}.search-input-wrap input{min-height:52px}.result-card{padding:.7rem .75rem .7rem .9rem}.keyboard-help{display:none}.detail-section{padding:.85rem}.detail-fields>div{grid-template-columns:1fr;gap:.12rem}}
