*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;background:#f4f7f6;color:#183029}a{color:inherit}header{position:sticky;top:0;display:flex;justify-content:space-between;align-items:center;padding:14px 18px;background:#173f35;color:#fff;z-index:10}header div{display:flex;gap:12px;align-items:center}header span{font-size:13px;opacity:.8}main{max-width:920px;margin:0 auto;padding:18px}.hero{background:#285f52;color:#fff;border-radius:20px;padding:24px;margin-bottom:16px}.hero h1{margin:0 0 6px}.panel{background:#fff;border:1px solid #dce6e2;border-radius:18px;padding:18px;margin-bottom:16px;box-shadow:0 8px 24px rgba(20,50,42,.05)}h2{margin-top:0}form{display:grid;gap:12px}label{display:grid;gap:6px;font-weight:700;font-size:14px}input,select,textarea,button{font:inherit}input,select,textarea{width:100%;padding:12px;border:1px solid #cfdcd7;border-radius:12px;background:#fff}textarea{min-height:110px;resize:vertical}button{border:0;border-radius:12px;padding:12px 16px;background:#285f52;color:#fff;font-weight:800}.row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.check{display:flex;align-items:center;gap:8px}.check input{width:auto}.warning{background:#fff3cf;color:#745800;padding:10px 12px;border-radius:12px;font-size:13px}.msg{border-top:1px solid #e3ebe8;padding:15px 0}.msg:first-of-type{border-top:0}.msg>div{display:flex;justify-content:space-between;gap:10px}.msg span,.msg small{color:#6d7f79;font-size:12px}.actions{display:inline-block;margin-top:10px}.actions button{padding:8px 11px}.flash{background:#e0f1e8;padding:10px 12px;border-radius:10px;margin-bottom:12px}.auth{min-height:100vh;display:grid;place-items:center;padding:18px;background:#eef4f1}.login-card{width:min(420px,100%);background:#fff;border:1px solid #dce6e2;border-radius:22px;padding:28px;box-shadow:0 16px 40px rgba(20,50,42,.08)}.brand{width:48px;height:48px;border-radius:14px;background:#285f52;color:#fff;display:grid;place-items:center;font-weight:900;font-size:22px}.login-card h1{margin-bottom:4px}.login-card p{color:#6d7f79}.login-card small{display:block;margin-top:14px;color:#6d7f79}@media(max-width:640px){main{padding:12px}.hero{padding:20px}.panel{padding:15px}.row{grid-template-columns:1fr}.msg>div{display:grid}header span{display:none}}
.eyebrow{display:block;font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;opacity:.72;margin-bottom:4px}
.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}
.quick-grid article,.quick-grid a{background:#fff;border:1px solid #dce6e2;border-radius:16px;padding:16px;text-decoration:none;color:#183029;box-shadow:0 5px 16px rgba(20,50,42,.04)}
.quick-grid strong{display:block;font-size:24px;color:#285f52}.quick-grid span{display:block;font-size:12px;color:#6d7f79;margin-top:2px}
.section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.section-title h2{margin:0}
.agenda-list{display:grid;gap:8px}.agenda-item{display:grid;grid-template-columns:58px 1fr;gap:12px;align-items:center;padding:11px;border-radius:13px;background:#f3f7f5}
.agenda-time{font-size:11px;color:#6d7f79;text-align:center}.agenda-time strong{display:block;font-size:16px;color:#285f52}
.agenda-item>div:last-child strong,.agenda-item>div:last-child span{display:block}.agenda-item>div:last-child span{font-size:12px;color:#6d7f79;margin-top:2px}
.msg-head{display:flex;justify-content:space-between;gap:12px}.msg-head>div strong,.msg-head>div span{display:block}.msg-head>div span{font-size:12px;color:#6d7f79;margin-top:2px}
.msg-head time{font-size:12px;color:#6d7f79;white-space:nowrap}.message-meta{display:flex;gap:7px;align-items:center;flex-wrap:wrap;font-size:12px;color:#6d7f79}
.chip{padding:4px 8px;border-radius:999px;font-weight:800}.action-chip{background:#fff0cf;color:#785700}.status-chip{background:#e5f2ed;color:#285f52}
.status-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}.status-actions form{display:block}.status-actions button{padding:8px 12px}.secondary-button{background:#eef3f1;color:#285f52}
.user-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.user-tile{display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:11px;padding:12px;border:1px solid #dce6e2;border-radius:14px}
.user-avatar{width:44px;height:44px;border-radius:12px;background:#e3efea;color:#285f52;display:grid;place-items:center;font-weight:900}
.user-tile strong,.user-tile small{display:block}.user-tile small{color:#6d7f79;margin-top:2px}.user-tile button{padding:8px 12px}.user-tile button.selected{background:#dcefe7;color:#285f52}
.backlink{display:inline-block;margin:4px 0 14px;text-decoration:none;color:#285f52;font-weight:800}.notice{padding:12px 14px;background:#eaf2ff;color:#365f88;border-radius:12px}
.mobile-nav{display:none}
.empty{color:#6d7f79}

@media(max-width:700px){
  body{padding-bottom:72px}
  .quick-grid{grid-template-columns:1fr 1fr}
  .user-grid{grid-template-columns:1fr}
  .compose-panel{padding-bottom:18px}
  .mobile-nav{position:fixed;display:flex;left:0;right:0;bottom:0;z-index:30;background:#fff;border-top:1px solid #dce6e2;min-height:62px;align-items:center;justify-content:space-around;padding:8px 10px calc(8px + env(safe-area-inset-bottom))}
  .mobile-nav a{flex:1;text-align:center;text-decoration:none;color:#285f52;font-weight:800;font-size:12px;padding:8px 5px}
}
@media(min-width:701px){
  .compose-panel form{max-width:720px}
}

/* 0.2 app navigation */
.app-tabs{position:sticky;top:52px;z-index:9;display:flex;gap:4px;justify-content:center;background:#fff;border-bottom:1px solid #dce6e2;padding:8px 14px}
.app-tabs a{padding:10px 14px;border-radius:10px;text-decoration:none;font-weight:800;font-size:14px;color:#557068}
.app-tabs a:hover,.app-tabs a.active{background:#e5f1ed;color:#1f5a4b}
.page-head{display:flex;justify-content:space-between;align-items:end;margin:8px 0 16px}.page-head h1{margin:0 0 4px;font-size:30px}.page-head p{margin:0;color:#6d7f79}
.compact-hero{padding:20px 24px}.dashboard-columns{display:grid;grid-template-columns:1fr 1fr;gap:16px}.home-grid{grid-template-columns:repeat(4,1fr)}
.section-title>a{font-size:13px;font-weight:800;color:#285f52;text-decoration:none}
.mini-msg{padding:12px 0;border-top:1px solid #e5ece9}.mini-msg:first-of-type{border-top:0}.mini-msg p{margin:5px 0;color:#435c55}.mini-msg small{color:#7b8c86}
.compose-details>summary{cursor:pointer;list-style:none;font-weight:900;font-size:16px;color:#285f52}.compose-details>summary::-webkit-details-marker{display:none}.compose-details[open]>summary{margin-bottom:18px}.compose-form{max-width:720px}
.calendar-list{display:grid;gap:0}.calendar-row{display:grid;grid-template-columns:64px 1fr;gap:16px;padding:16px 0;border-top:1px solid #e3ebe8}.calendar-row:first-child{border-top:0}
.calendar-date{width:58px;height:58px;border-radius:14px;background:#e7f1ed;display:grid;place-items:center;align-content:center;color:#285f52}.calendar-date strong{font-size:22px;line-height:1}.calendar-date span{font-size:10px;font-weight:900;margin-top:3px}.calendar-row p{margin:5px 0;color:#435c55}.calendar-row small{color:#74857f}
@media(max-width:700px){
  header{position:sticky;top:0}
  .app-tabs{position:fixed;top:auto;bottom:0;left:0;right:0;z-index:50;justify-content:space-around;padding:7px 5px calc(7px + env(safe-area-inset-bottom));box-shadow:0 -5px 18px rgba(20,50,42,.08)}
  .app-tabs a{flex:1;text-align:center;padding:9px 4px;font-size:11px}
  .dashboard-columns{grid-template-columns:1fr}
  .home-grid{grid-template-columns:1fr 1fr}
  .page-head h1{font-size:25px}
  main{padding-bottom:84px}
}

/* 0.2.1 message archive */
.message-tabs{display:flex;gap:6px;margin:0 0 14px}
.message-tabs a{padding:9px 14px;border-radius:999px;background:#e8efec;color:#526a63;text-decoration:none;font-weight:800;font-size:13px}
.message-tabs a.active{background:#285f52;color:#fff}
.archive-button{background:#edf1ef;color:#35574e}
.archive-meta{margin-top:10px;padding-top:9px;border-top:1px dashed #dce6e2;color:#7a8b85;font-size:11px}

/* 0.3 administration/support */
.admin-list{display:grid;gap:8px}.admin-row{display:grid;grid-template-columns:44px 1fr auto auto;gap:10px;align-items:center;padding:10px 0;border-top:1px solid #e5ece9}.admin-row:first-child{border-top:0}.admin-main strong,.admin-main span{display:block}.admin-main span,.relation-row span,.grant-row span,.grant-row small{color:#6f827b;font-size:12px}.relation-row{padding:11px 0;border-top:1px solid #e5ece9}.relation-row:first-child{border-top:0}.relation-row strong,.relation-row span{display:block}.off-chip{background:#eef0ef;color:#68756f}.small-button{padding:8px 11px}.support-form{display:grid;grid-template-columns:1fr 160px;gap:12px}.support-form .wide{grid-column:1/-1}.grant-list{margin-top:18px}.grant-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:12px 0;border-top:1px solid #e5ece9}.grant-row strong,.grant-row span,.grant-row small{display:block}.tech-table{display:grid}.tech-row{display:grid;grid-template-columns:140px 1fr 120px 120px;gap:10px;padding:9px 0;border-top:1px solid #e5ece9;font-size:13px}.tech-row:first-child{border-top:0}.tech-row code{font-weight:800;color:#285f52}@media(max-width:700px){.admin-row{grid-template-columns:44px 1fr}.admin-row>.chip,.admin-row>form{grid-column:2}.support-form{grid-template-columns:1fr}.support-form .wide{grid-column:auto}.tech-row{grid-template-columns:1fr 1fr}.grant-row{grid-template-columns:1fr}}

/* 0.4 organisation administration */
.inline-create{display:grid;grid-template-columns:1fr auto;gap:10px;margin-bottom:16px}
.department-row{display:grid;grid-template-columns:1fr auto auto auto;gap:10px;align-items:center;padding:11px 0;border-top:1px solid #e5ece9}
.department-row:first-child{border-top:0}.department-row strong,.department-row span{display:block}.department-row>div>span{font-size:12px;color:#71847d;margin-top:2px}
.account-create{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.account-create .form-action{display:flex;align-items:end}.account-create .form-action button{width:100%}
.admin-row-wide{grid-template-columns:44px minmax(180px,1fr) auto minmax(150px,200px) auto auto}.dept-change select{padding:8px 10px}
.danger-button{background:#fff0ed;color:#9b3d2f}.muted{font-size:12px;color:#72847e;margin:10px 0 0}
.relation-create{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:10px;align-items:end;margin-bottom:18px}.relation-create .form-action{display:flex;align-items:end}
.relation-row-manage{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center}
@media(max-width:850px){
  .admin-row-wide{grid-template-columns:44px 1fr}.admin-row-wide>.chip,.admin-row-wide>form{grid-column:2}
  .department-row{grid-template-columns:1fr auto}.department-row form{grid-column:2}
  .account-create,.relation-create{grid-template-columns:1fr}
  .relation-row-manage{grid-template-columns:1fr auto}.relation-row-manage form{grid-column:2}
}

.resident-body{background:#eef4f1}
.resident-main{max-width:760px}
.resident-card{background:#fff;border:1px solid #dce6e2;border-radius:24px;padding:26px;box-shadow:0 12px 30px rgba(20,50,42,.07);margin-bottom:18px}
.resident-card h1{font-size:30px;margin:0 0 6px}
.resident-intro{color:#657b74;margin:0 0 20px}
.resident-form{display:grid;gap:18px}
.resident-form textarea{min-height:170px;font-size:18px;line-height:1.45}
.big-label{font-size:16px}.optional{font-weight:500;color:#82918c;font-size:12px}
.sender-choice{border:0;padding:0;margin:0;display:flex;gap:12px;flex-wrap:wrap}
.sender-choice legend{font-weight:800;margin-bottom:8px;width:100%}
.sender-choice label{display:flex;align-items:center;gap:8px;background:#f1f6f4;padding:12px 14px;border-radius:12px}
.sender-choice input{width:auto}.resident-send{font-size:18px;padding:15px 18px}
.resident-send:disabled{opacity:.45;cursor:not-allowed}
.strong-warning{font-weight:700;margin-bottom:18px}
.resident-status{display:grid;gap:10px}.resident-status h2{margin:8px 0}
.resident-message{background:#fff;border:1px solid #dce6e2;border-radius:16px;padding:15px}
.resident-message>div:first-child{display:flex;justify-content:space-between;gap:10px}
.resident-message time{font-size:12px;color:#778983}.resident-message p{font-size:16px;margin:10px 0}
.receipt{margin-top:11px;padding:9px 11px;border-radius:10px;font-weight:800;font-size:13px}
.receipt.pending{background:#f3f5f4;color:#687771}.receipt.confirmed{background:#e1f2ea;color:#1f644e}
.staff-summary{grid-template-columns:repeat(2,minmax(0,220px));justify-content:start}
.routed-msg .event-chip{display:inline-block;background:#eef4f1;border-radius:9px;padding:7px 9px;font-size:12px;color:#50665f;margin:4px 0 10px}
.assignment-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:12px 0;border-top:1px solid #e4ebe8}
.assignment-row:first-child{border-top:0}.assignment-row span{color:#6f817b}
.end-day-form{display:flex;justify-content:flex-end;margin:0 0 14px}
.user-tile button:disabled{background:#ecefed;color:#78857f;cursor:not-allowed}
@media(max-width:700px){.resident-card{padding:20px;border-radius:18px}.resident-card h1{font-size:26px}.resident-form textarea{min-height:150px}.staff-summary{grid-template-columns:1fr 1fr}.assignment-row{grid-template-columns:1fr}}

/* 0.6 queue and handover */
.takeover-box{display:flex;align-items:center;gap:8px;justify-content:flex-end}
.takeover-box small{color:#7a8a84;text-align:right}
.takeover-box button{padding:8px 11px}
