.v2-hero { background:transparent; color:#173c2c; border-radius:0; padding:6px 0 20px; border-bottom:1px solid #dce6e1; grid-template-columns:minmax(0,1fr); }
.v2-hero h1 { font-size:27px; line-height:1.25; }
.v2-hero p { color:#5b7067; }
.v2-hero .hero-actions { justify-content:flex-start; flex-wrap:wrap; }
.v2-hero .button.primary { background:#123cf3; color:white; }
.v2-filters { display:flex; flex-wrap:wrap; gap:12px; align-items:end; margin:20px 0; }
.v2-filters .field { min-width:150px; flex:1; max-width:320px; }
.v2-summary { display:flex; flex-wrap:wrap; gap:22px; padding:16px 0; margin-bottom:16px; border-block:1px solid #dce6e1; color:#52675e; }
.v2-summary strong { color:#173c2c; font-size:22px; margin-right:6px; }
.v2-schedule-toolbar { display:flex; align-items:center; justify-content:space-between; gap:18px; margin:8px 0 18px; }
.v2-schedule-toolbar .v2-summary { flex:1; margin:0; }
.v2-segmented { display:inline-flex; flex:none; padding:3px; gap:2px; border:1px solid #cfdcd6; background:#f4f7f5; border-radius:6px; }
.v2-segmented button { display:inline-flex; align-items:center; justify-content:center; gap:7px; min-height:38px; padding:7px 11px; border:0; border-radius:4px; background:transparent; color:#52675e; font:inherit; font-size:13px; font-weight:700; cursor:pointer; }
.v2-segmented button:hover { background:#e7efeb; color:#173c2c; }
.v2-segmented button.active { background:#fff; color:#123cf3; box-shadow:0 1px 4px #173c2c1c; }
.v2-segmented svg { width:17px; height:17px; }
.v2-calendar-shell { width:100%; overflow-x:auto; overscroll-behavior-inline:contain; border-block:1px solid #dce6e1; background:#fff; scrollbar-color:#90a69c #edf2ef; }
.v2-calendar-hint { display:none; position:sticky; left:0; width:max-content; align-items:center; gap:7px; padding:9px 0; color:#5b7067; font-size:12px; font-weight:700; }
.v2-calendar-hint svg { width:16px; height:16px; }
.v2-calendar-grid { display:grid; grid-template-columns:72px repeat(7,minmax(132px,1fr)); min-width:1050px; }
.v2-time-axis, .v2-calendar-day { min-width:0; border-right:1px solid #e2e9e5; }
.v2-calendar-corner, .v2-calendar-day > h3 { display:flex; align-items:center; height:48px; margin:0; padding:0 10px; border-bottom:1px solid #dce6e1; background:#f7f9f8; color:#40594e; font-size:13px; line-height:1.2; }
.v2-time-axis > span { display:block; height:52px; padding:6px 8px 0; border-bottom:1px solid #edf1ef; color:#6a7d74; font-size:11px; text-align:right; }
.v2-calendar-day-body { position:relative; height:calc(var(--calendar-hours) * 52px); background:repeating-linear-gradient(to bottom,#fff 0,#fff 51px,#edf1ef 51px,#edf1ef 52px); }
.v2-calendar-event { position:absolute; z-index:1; left:4px; right:4px; display:block; min-width:0; padding:5px 7px; overflow:hidden; border:0; border-left:3px solid #2958da; border-radius:4px; background:#eaf0ff; color:#19375f; text-align:left; font:inherit; line-height:1.2; }
button.v2-calendar-event { width:calc(100% - 8px); cursor:pointer; }
button.v2-calendar-event:hover, button.v2-calendar-event:focus-visible { z-index:3; outline:2px solid #123cf3; outline-offset:1px; box-shadow:0 5px 14px #173c2c28; }
.v2-calendar-event > span, .v2-calendar-event > strong, .v2-calendar-event > small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.v2-calendar-event > span { font-size:10px; font-weight:800; }
.v2-calendar-event > strong { margin:2px 0; font-size:12px; }
.v2-calendar-event > small { font-size:10px; color:#4a6458; }
.v2-calendar-event.type-homeroom { border-left-color:#c57d0a; background:#fff3d8; color:#6b470e; }
.v2-calendar-event.type-support { border-left-color:#168061; background:#e6f7ef; color:#155540; }
.v2-calendar-event.type-meeting { border-left-color:#b54b45; background:#fdecea; color:#6c2e2a; }
.v2-schedule-details { margin-top:20px; border-top:1px solid #dce6e1; }
.v2-schedule-details > summary { min-height:46px; padding:14px 2px; color:#173c2c; font-weight:700; cursor:pointer; }
.v2-record { padding:22px; background:#fff; border:1px solid #dce6e1; border-radius:8px; margin-bottom:16px; min-width:0; overflow-wrap:anywhere; }
.v2-record header { display:flex; align-items:start; justify-content:space-between; gap:16px; }
.v2-record h2 { font-size:19px; margin:12px 0 6px; line-height:1.35; }
.v2-assignment-list { display:grid; grid-template-columns:minmax(0,1fr); gap:16px; }
.v2-assignment-list .v2-record { margin-bottom:0; }
.v2-assignment-list summary { cursor:pointer; min-height:44px; display:flex; align-items:center; color:#294e6f; font-weight:700; }
.v2-assignment-list summary::before { content:'+'; margin-right:8px; }
.v2-assignment-list details[open] summary::before { content:'-'; }
.v2-record h3 { font-size:15px; margin:16px 0 6px; }
.v2-record p { margin:8px 0 12px; line-height:1.65; }
.v2-prose { white-space:pre-wrap; overflow-wrap:anywhere; line-height:1.7; }
.v2-agreement { border-left:3px solid #148369; padding:8px 16px; background:#f2faf6; margin-top:12px; }
.v2-timeline { border-left:2px solid #ccdad3; padding:12px 16px; margin:10px 0; font-size:14px; overflow-wrap:anywhere; }
.v2-timeline span { font-size:12px; color:#60736a; }
.v2-timeline.private { border-left-color:#bd7c17; background:#fffbee; }
.v2-timeline p { white-space:pre-wrap; margin:8px 0; }
.v2-tabs { overflow-x:auto; white-space:nowrap; margin:18px 0; }
.v2-tabs button { flex:none; min-height:44px; }
.v2-request-management { padding:22px 0; margin:16px 20px; border-top:1px solid #dce6e1; }
.v2-request-management h3 { font-size:16px; margin:20px 0 8px; }
.v2-span { grid-column:1/-1; min-width:0; }
.v2-modal { max-width:760px; width:calc(100% - 24px); display:flex; flex-direction:column; overflow:hidden; max-height:calc(100dvh - 36px); }
.v2-modal > .modal-head { flex:0 0 auto; }
.v2-modal > form { display:flex; flex-direction:column; min-height:0; overflow:hidden; }
.v2-modal > form > .modal-body { overflow:auto; min-height:0; overscroll-behavior:contain; }
.v2-modal > form > .modal-foot { flex:0 0 auto; background:#fff; flex-wrap:wrap; padding-bottom:max(14px, env(safe-area-inset-bottom)); }
.v2-modal .field { min-width:0; }
.v2-modal input, .v2-modal select, .v2-modal textarea { width:100%; min-width:0; }
.v2-modal .field input[type=file] { padding:10px 0; border:0; background:transparent; }
.v2-modal textarea { min-height:100px; resize:vertical; }
.v2-modal .modal-head h2 { font-size:21px; }
.v2-modal .modal-foot { gap:10px; }
.v2-checks { display:flex; flex-wrap:wrap; gap:10px; padding:14px 0; border:0; border-top:1px solid #dce6e1; margin:4px 0; max-height:240px; overflow:auto; }
.v2-checks legend { font-size:14px; font-weight:600; padding-right:10px; }
.v2-checks label { display:flex; align-items:center; gap:8px; min-height:38px; padding:5px 12px; background:#f5f8f7; border-radius:4px; cursor:pointer; }
.v2-checks input { width:18px; height:18px; accent-color:#0b795e; flex:none; }
.v2-error[hidden] { display:none; }
.v2-area-list > div { display:flex; gap:10px; align-items:center; justify-content:space-between; border-bottom:1px solid #e3e9e6; padding:8px 0; }
.v2-banner { display:flex; gap:24px; align-items:center; border-bottom:1px solid #dce6e1; padding:0 0 22px; margin-bottom:24px; overflow:hidden; }
.v2-banner > img { width:42%; max-width:440px; aspect-ratio:16/7; object-fit:contain; background:#f3f6f4; border-radius:6px; }
.v2-banner > div { min-width:0; flex:1; }
.v2-banner h2 { font-size:22px; line-height:1.3; margin:0 0 8px; overflow-wrap:anywhere; }
.v2-banner p { font-size:15px; line-height:1.6; margin:0 0 12px; overflow-wrap:anywhere; }
.v2-banner-preview { width:100%; max-height:250px; object-fit:contain; margin:12px 0; }
.v2-home-links { display:flex; gap:14px; flex-wrap:wrap; margin:20px 0; }
.v2-highlight { outline:3px solid #138a6d; outline-offset:3px; }
.v2-public { max-width:860px; margin:0 auto; padding:28px 26px 64px; color:#20392e; }
.v2-public-brand { display:inline-block; margin-bottom:24px; }
.v2-public-brand img { object-fit:contain; }
.v2-public-photo { display:block; width:100%; max-height:420px; object-fit:contain; margin-bottom:26px; background:#f1f6f3; }
.v2-public h1 { font-size:32px; line-height:1.2; margin:18px 0; overflow-wrap:anywhere; }
.v2-public-details { display:grid; grid-template-columns:1fr 1fr; gap:16px; padding:22px 0; border-block:1px solid #dce6e1; margin:24px 0; }
.v2-public-details dt { font-size:12px; font-weight:700; color:#617b6a; margin-bottom:5px; }
.v2-public-details dd { margin:0; overflow-wrap:anywhere; }
.v2-public .row-actions { flex-wrap:wrap; }
.access-landing { max-width:1060px; margin:0 auto; padding:48px 28px 36px; }
.access-intro { border-bottom:1px solid #dce6e1; padding-bottom:26px; margin-bottom:30px; }
.access-intro h1 { font-size:38px; color:#173c2c; letter-spacing:0; }
.access-intro p { max-width:560px; }
.access-options { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; }
.access-option { position:relative; display:flex; flex-direction:column; align-items:flex-start; padding:24px; gap:18px; min-height:225px; border-radius:8px; border:1px solid #d7e4dd; transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease; }
.access-option:hover { transform:translateY(-3px); box-shadow:0 10px 22px #183e2610; border-color:#4a8a70; }
.access-option.student { background:#f2f6ff; border-top:4px solid #194ce0; }
.access-option.parent { background:#effaf4; border-top:4px solid #13825b; }
.access-option.identity { background:#fffaf0; border-top:4px solid #c48615; }
.access-option.identity .access-option-mark { color:#976106; background:#ffebba; }
.access-option-mark { width:52px; height:52px; border-radius:12px; display:grid; place-items:center; flex:none; }
.access-option-mark svg { width:28px; height:28px; }
.access-option-arrow { position:absolute; right:20px; top:28px; }
.access-option-arrow svg { width:23px; height:23px; }
.access-option strong { display:block; font-size:20px; line-height:1.3; overflow-wrap:anywhere; }
.access-option-label { display:block; font-size:12px; font-weight:700; margin-bottom:8px; }
.access-option p { font-size:14px; line-height:1.5; margin:10px 0 0; }
.card-lookup { margin-top:30px; padding:24px 0; border:0; border-block:1px solid #dce6e1; background:transparent; border-radius:0; }
.card-lookup-heading h2 { font-size:22px; }
.card-lookup-form { align-items:end; }
.login-teacher .login-role-mark { color:#116b53; background:#def5e9; }
.button svg { flex:none; width:18px; height:18px; }
.v2-record .button, .v2-modal .button { white-space:normal; line-height:1.3; min-height:40px; }
@media(max-width:760px) {
  .access-landing { padding:28px 18px; }
  .access-intro h1 { font-size:30px; }
  .access-options { grid-template-columns:1fr; gap:12px; }
  .access-option { min-height:130px; flex-direction:row; align-items:center; gap:16px; padding:18px 45px 18px 18px; }
  .access-option-arrow { top:24px; right:14px; }
  .access-option strong { font-size:18px; }
  .access-option p { font-size:13px; margin-top:5px; }
  .access-option-mark { width:44px; height:44px; }
  .access-option-label { margin-bottom:4px; }
  .v2-record { padding:16px; }
  .v2-record header { flex-direction:column; }
  .v2-record h2 { font-size:18px; }
  .v2-banner { flex-direction:column; align-items:stretch; gap:14px; }
  .v2-banner > img { width:100%; max-width:none; }
  .v2-banner h2 { font-size:20px; }
  .v2-filters { gap:10px; }
  .v2-filters .field { min-width:135px; max-width:none; }
  .v2-schedule-toolbar { align-items:stretch; flex-direction:column; gap:10px; }
  .v2-schedule-toolbar .v2-summary { width:100%; gap:12px; }
  .v2-schedule-toolbar .v2-summary strong { font-size:18px; }
  .v2-segmented { align-self:flex-start; }
  .v2-calendar-hint { display:flex; }
  .v2-calendar-grid { min-width:1000px; }
  .v2-modal .grid.two { grid-template-columns:minmax(0,1fr); }
  .v2-modal .modal-body { padding:18px; }
  .v2-modal .modal-head { padding:18px; }
  .v2-modal .modal-head h2 { font-size:19px; }
  .v2-request-management { margin:16px 12px; }
  .v2-public h1 { font-size:26px; }
  .v2-public-details { grid-template-columns:1fr; }
}
@media(prefers-reduced-motion:reduce) { .access-option { transition:none; } .access-option:hover { transform:none; } }
