:root{color:#18201d;background:#f4f7f3;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(180deg,#ffffffbd,#f4f7f3f5),#f4f7f3}#root,.site-frame{min-height:100vh}.site-frame{display:flex;flex-direction:column}.site-frame>main{flex:1 0 auto}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.62}.app-shell{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:28px 0 48px}.app-shell.centered,.login-page{display:grid;place-items:center}.site-footer{width:100%;flex:0 0 auto;padding:8px 16px 24px;color:#66736c;font-size:.86rem;line-height:1.6;text-align:center}.site-footer-links{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px 18px}.site-footer a{display:inline-flex;align-items:center;gap:6px;color:inherit;text-decoration:none}.police-filing-link img{width:20px;height:20px;flex:0 0 20px;object-fit:contain}.site-footer a:hover{color:#225d5d;text-decoration:underline}.site-footer a:focus-visible{border-radius:3px;outline:3px solid rgba(44,122,123,.2);outline-offset:3px}.login-page{padding:24px}.login-panel{width:min(460px,100%);padding:32px;border:1px solid #d8e1d7;border-radius:8px;background:#fff;box-shadow:0 18px 45px #2430281c}.login-panel h1,.top-bar h1,.section-heading h2{margin:0;color:#17211c}.login-panel h1{margin-top:6px;font-size:clamp(1.6rem,4vw,2rem)}.top-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-bottom:24px}.top-bar h1{margin-top:4px;font-size:clamp(1.55rem,3vw,2.2rem)}.eyebrow{margin:0;color:#25615d;font-size:.74rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.muted{color:#66736c}.user-box{display:flex;align-items:center;gap:14px;padding:12px;border:1px solid #dbe5dc;border-radius:8px;background:#ffffffd1}.user-box div{display:grid;gap:3px}.user-box span{color:#68736e;font-size:.9rem}.content{display:grid;min-width:0;gap:20px}.dashboard-grid{display:grid;min-width:0;grid-template-columns:minmax(320px,420px) minmax(0,1fr);gap:20px;align-items:start}.panel,.status-card,.empty-state{border:1px solid #dce5dd;border-radius:8px;background:#fff}.panel{min-width:0;max-width:100%;padding:22px}.status-card,.empty-state{padding:18px;color:#65716a}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.section-heading h2{margin-top:4px;font-size:1.22rem}.form{display:grid;gap:16px}.form label,.comment-editor label{display:grid;gap:7px;color:#25302a;font-weight:700}input,textarea{width:100%;border:1px solid #cfd9d1;border-radius:6px;background:#fbfcfb;color:#19241e;outline:none;transition:border-color .16s ease,box-shadow .16s ease}input{min-height:44px;padding:0 12px}textarea{min-height:88px;padding:11px 12px;resize:vertical}input:focus,textarea:focus{border-color:#2c7a7b;box-shadow:0 0 0 3px #2c7a7b1f}.primary-button,.secondary-button,.ghost-button,.danger-button{min-height:40px;border-radius:6px;border:1px solid transparent;padding:0 14px;font-weight:800}.primary-button{background:#276f70;color:#fff}.primary-button:hover:not(:disabled){background:#1e5d5e}.primary-button.compact{width:fit-content;min-height:36px}.secondary-button{border-color:#c9d6cc;background:#fff;color:#26322b}.secondary-button:hover:not(:disabled),.ghost-button:hover:not(:disabled){background:#f1f5f1}.ghost-button{border-color:#d4ded6;background:transparent;color:#1f5f61}.danger-button{border-color:#f0b8bf;background:#fff1f2;color:#a1163a}.danger-button:hover:not(:disabled){background:#ffe3e6}.button-row{display:flex;flex-wrap:wrap;gap:10px}.alert{border-radius:6px;padding:11px 12px;font-size:.94rem}.alert-error{border:1px solid #f0b8bf;background:#fff1f2;color:#9f1239}.alert-success{border:1px solid #add8c7;background:#edfdf5;color:#16633d}.character-count{color:#68736e;font-size:.82rem;font-weight:600}.character-count.over-limit{color:#b42345}.card-list{display:grid;gap:16px}.student-group-list{display:grid;min-width:0;gap:12px}.student-group{min-width:0;max-width:100%;overflow:hidden;border:1px solid #d8e1d7;border-radius:8px;background:#fff}.student-group-summary{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:72px;gap:16px;border:0;background:#f8fbf8;color:#17211c;padding:14px 16px;text-align:left}.student-group-summary:hover,.student-group-summary[aria-expanded=true]{background:#eef6f4}.student-group-main{display:flex;align-items:center;min-width:0;gap:12px}.student-group-main strong,.student-group-main small{display:block}.student-group-main strong{font-size:1.06rem}.student-group-main small{margin-top:3px;color:#66736c;font-size:.88rem}.student-group-toggle{display:inline-grid;width:30px;height:30px;flex:0 0 30px;place-items:center;border:1px solid #cbd9d2;border-radius:999px;background:#fff;color:#276f70;font-size:1.08rem;font-weight:900;line-height:1}.student-group-meta{display:flex;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end;gap:8px;color:#55625b;font-size:.88rem;font-weight:700}.student-group-meta span{display:inline-flex;align-items:center;min-height:28px;border-radius:999px;background:#fff;padding:0 10px}.student-group-items{display:grid;min-width:0;gap:14px;padding:14px;border-top:1px solid #dfe8e1;background:#fbfcfb}.progress-card{display:grid;min-width:0;max-width:100%;gap:16px;padding:18px;border:1px solid #d8e1d7;border-radius:8px;background:#fff}.progress-card>*{min-width:0;max-width:100%}.card-header,.card-actions{display:flex;align-items:flex-start;gap:12px}.card-header{min-width:0;max-width:100%;justify-content:space-between}.card-header>div:first-child{min-width:0;overflow-wrap:anywhere}.card-header h3{margin:0;font-size:1.15rem}.card-header p,.card-footer{margin:5px 0 0;color:#68736e}.card-actions{align-items:center;flex-wrap:wrap;justify-content:flex-end}.week-badge{display:inline-flex;align-items:center;min-height:32px;border-radius:999px;padding:0 12px;background:#e7f0ee;color:#225d5d;font-size:.88rem;font-weight:800}.progress-fields{display:grid;min-width:0;gap:10px;margin:0}.field-row{display:grid;min-width:0;grid-template-columns:minmax(120px,190px) minmax(0,1fr);gap:14px;padding:11px 0;border-top:1px solid #eef2ef}.field-row dt{color:#56635d;font-weight:800}.field-row dd{min-width:0;margin:0;color:#1c261f;overflow-wrap:anywhere;white-space:pre-wrap}.comment-block{min-width:0;max-width:100%;border-left:4px solid #d5a11e;border-radius:6px;background:#fff9e8;padding:12px 14px}.attachment-block{display:grid;min-width:0;max-width:100%;gap:12px;border:1px solid #d8e3df;border-radius:7px;background:#f7fbfa;padding:14px}.attachment-selection{display:flex;align-items:center;justify-content:space-between;gap:14px}.attachment-heading,.attachment-file{display:grid;min-width:0;max-width:100%;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px}.attachment-heading>div{min-width:0}.attachment-title{color:#225d5d;font-weight:900}.attachment-heading p,.attachment-empty{margin:4px 0 0;overflow-wrap:anywhere;font-size:.86rem}.attachment-type{flex:0 0 auto;border-radius:999px;background:#deefeb;color:#205e5b;padding:5px 9px;font-size:.78rem;font-weight:900}.attachment-file-info{display:grid;min-width:0;gap:4px}.attachment-file-info strong{overflow-wrap:anywhere}.attachment-file-info small,.attachment-upload small{color:#66736c}.attachment-upload{display:grid;gap:9px}.attachment-upload label{display:grid;gap:7px;color:#25302a;font-weight:700}.attachment-selection{align-items:flex-start;flex-direction:column}.attachment-selection span{overflow-wrap:anywhere;color:#38463e;font-size:.9rem}.attachment-actions{min-width:0;max-width:100%;justify-content:flex-end}.comment-block p{min-width:0;max-width:100%;margin:6px 0;overflow-wrap:anywhere;word-break:break-word;white-space:pre-wrap}.comment-block small{overflow-wrap:anywhere;color:#6c5b2d}.comment-title{color:#6c4f11;font-weight:900}.comment-editor{display:grid;min-width:0;gap:10px;border-top:1px solid #eef2ef;padding-top:14px}.card-footer{border-top:1px solid #eef2ef;padding-top:12px;font-size:.9rem}@media (max-width: 880px){.top-bar,.card-header,.section-heading{align-items:stretch;flex-direction:column}.dashboard-grid{grid-template-columns:1fr}.user-box{justify-content:space-between}}@media (max-width: 620px){.app-shell{width:min(100% - 20px,1180px);padding-top:16px}.login-panel,.panel,.progress-card{padding:16px}.field-row{grid-template-columns:1fr;gap:5px}.button-row,.card-actions,.student-group-summary{align-items:stretch;flex-direction:column}.attachment-heading,.attachment-file{grid-template-columns:minmax(0,1fr);align-items:stretch}.attachment-actions{justify-content:stretch}.student-group-main{align-items:flex-start}.student-group-meta{justify-content:flex-start}.primary-button,.secondary-button,.ghost-button,.danger-button{width:100%}}
