:root{--blue:#2449ba;--navy:#132448;--ivory:#faf8f2;--gold:#b79b61;--muted:#647087;--line:#e4e7ed}*{box-sizing:border-box}body{margin:0;background:var(--ivory);color:var(--navy);font:14px/1.65 Arial,sans-serif}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.wrap{width:calc(100% - 80px);max-width:1200px;margin:auto}.demo{background:var(--navy);color:#dbe2f2;padding:8px 25px;font-size:10px;letter-spacing:.5px;display:flex;justify-content:space-between;gap:15px}.demo a{text-decoration:underline}header{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:25px 0}.brand{display:flex;align-items:center;gap:12px;font:23px/1.15 Georgia,serif}.brand small{font:8px Arial,sans-serif;letter-spacing:2px;margin-top:8px}small{display:block}.logo{display:block;position:relative;overflow:hidden;border-radius:50%;width:50px;height:50px;flex-shrink:0}.logo img{position:absolute;width:107.2%;left:-3.6%;top:-3.6%}nav{display:flex;gap:28px;align-items:center;font-size:12px}.button{border:1px solid var(--blue);background:var(--blue);color:white;display:inline-block;border-radius:3px;padding:13px 20px;font-size:12px;font-weight:bold}.button:hover{background:#17358f}.button.secondary{background:white;border-color:var(--line);color:var(--navy)}.eyebrow{font-size:9px;letter-spacing:2px;font-weight:bold;color:#856c3c}.hero{display:grid;grid-template-columns:1fr .96fr;gap:65px;align-items:center;padding:35px 0 65px}h1{font:normal clamp(48px,5.3vw,74px)/1.07 Georgia,serif;letter-spacing:-2px;margin:22px 0}em{color:var(--blue)}.lead{font-size:15px;color:var(--muted);line-height:1.85}.actions{display:flex;gap:22px;align-items:center;flex-wrap:wrap;margin-top:30px}.text-link{font-size:12px;border-bottom:1px solid var(--gold);padding-bottom:6px}.signature{color:#856c3c;font-size:11px;margin-top:40px}.plaid{background:#f4f6ff;background-image:linear-gradient(90deg,#2449ba65 50%,transparent 50%),linear-gradient(#2449ba65 50%,transparent 50%);background-size:38px 38px}.hero-art{padding:35px 30px 20px;text-align:center;min-height:530px}.arch{border-radius:220px 220px 4px 4px;background:var(--ivory);padding:35px 15px 20px;box-shadow:0 12px 30px #1324481a}.logo.large{width:215px;height:215px;margin:25px auto;border:6px solid var(--ivory);outline:1px solid var(--gold)}h2{font:normal 38px/1.18 Georgia,serif;letter-spacing:-.8px;margin:15px 0 20px}.arch h2{font-size:26px}.art-caption{background:var(--ivory);padding:6px 12px;width:fit-content;margin:20px auto 0;font-size:9px}.ribbon{background:var(--blue);color:white;display:flex;justify-content:center;gap:55px;padding:24px;font:19px Georgia,serif}.ribbon i{color:#dac68d}.section{padding-top:75px;padding-bottom:75px}.section-head{display:flex;align-items:end;justify-content:space-between;gap:30px;margin-bottom:28px}.section-head>p{max-width:340px;color:var(--muted)}.section-head small{font-size:10px;margin-top:12px}.programs{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.programs article{background:#fffefa;border:1px solid #deded6;padding:30px}.symbol{font:32px Georgia,serif;color:var(--blue);display:block;margin-bottom:30px}h3{font:24px Georgia,serif}.programs article>p:not(.eyebrow){color:var(--muted);font-size:13px;min-height:65px}.approach{background:#edf0f8;padding:55px 0}.split{display:grid;grid-template-columns:1fr 1fr;gap:70px}.split p{color:var(--muted)}.visit{text-align:center}.visit p{color:var(--muted)}.fine{font-size:10px}footer{border-top:1px solid var(--line);padding:30px 0;display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:11px}dialog{max-width:530px;width:calc(100% - 32px);border:1px solid var(--line);border-radius:10px;padding:40px;color:var(--navy)}dialog::backdrop{background:#13244888}.close{position:absolute;right:14px;top:8px;border:0;background:none;font-size:26px}.notice{background:#f7f3e9;color:#786130;border:1px solid #e7dcc4;padding:12px 16px;font-size:11px}.portal{background:#f4f6fa}.shell{display:grid;grid-template-columns:220px 1fr;min-height:calc(100vh - 32px)}aside{background:var(--navy);color:white;padding:26px 18px;display:flex;flex-direction:column}aside .brand{font-size:19px;gap:8px}aside .logo{width:38px;height:38px}aside .brand small{font-size:7px;letter-spacing:1px}aside .plaid{height:7px;margin:28px -18px}.nav-label{color:#9daecb;font-size:9px;letter-spacing:2px;padding-left:12px}.side-nav{display:flex;flex-direction:column;gap:6px}.side-nav button,.side-nav a{background:none;border:0;color:#c5d0e5;text-align:left;padding:12px;border-radius:5px;font-size:12px}.side-nav button.active{background:#ffffff12;box-shadow:inset 3px 0 var(--gold);color:white}.side-nav button:hover{background:#ffffff10}.aside-bottom{margin-top:auto;padding-top:60px;color:#b8c5dd;font-size:11px}.main{min-width:0}.portal-header{background:white;border-bottom:1px solid var(--line);padding:18px 30px;display:flex;justify-content:space-between;font-size:12px}.portal-header small{font-size:10px;color:var(--muted)}.content{max-width:1450px;padding:28px 30px;margin:auto}.heading{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:22px}.heading h1{font-size:34px;letter-spacing:-.8px;margin:8px 0}.heading p{margin:0;color:var(--muted);font-size:12px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:17px;margin:22px 0}.stat{background:white;border:1px solid var(--line);border-radius:7px;padding:20px 22px}.stat strong{font:30px Georgia,serif;display:block;margin:5px 0}.stat small,.stat span{color:var(--muted);font-size:10px}.panel{background:white;border:1px solid var(--line);border-radius:7px;margin:20px 0;overflow:hidden}.panel-head{padding:20px 22px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:15px;align-items:center}.panel-head h2{font:18px Georgia,serif;margin:0}.panel-head p{font-size:10px;color:var(--muted);margin:4px 0 0}.controls{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.controls label{font-size:9px;color:var(--muted)}select,input[type=search]{display:block;border:1px solid #d9dfeb;border-radius:4px;background:white;color:var(--navy);padding:9px 12px;max-width:100%}.tabs{display:flex;gap:25px;padding:0 22px;border-bottom:1px solid var(--line)}.tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:14px 4px;color:var(--muted);font-size:11px}.tabs button.active{color:var(--blue);border-color:var(--blue);font-weight:bold}.table-tools{padding:16px 22px;display:flex;justify-content:space-between;align-items:center;gap:12px}.table-tools input{width:225px;font-size:11px}.muted{font-size:11px;color:var(--muted)}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap;text-align:left;font-size:11px}th,td{padding:13px 14px;border-bottom:1px solid #edf0f5}th{background:#f8f9fc;color:var(--muted);font-size:9px;font-weight:normal}td:first-child,th:first-child{padding-left:22px}td small{font-size:9px;color:var(--muted)}td input{width:58px;padding:8px 6px;border:1px solid #dce2ef;border-radius:4px;text-align:center;color:var(--navy)}td input:invalid{border:2px solid #b43c3c;background:#fff0f0}.result{color:var(--blue);font-weight:bold}.badge{display:inline-block;padding:4px 9px;background:#edf7f2;color:#20765c;border-radius:4px;font-size:10px}.badge.gold{background:#f6f0df;color:#7d6224}.table-footer{padding:15px 22px;display:flex;justify-content:space-between;gap:15px;font-size:10px;color:var(--muted);background:#fcfcfe}.bottom-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:20px}.panel-body{padding:22px}.weight{display:flex;justify-content:space-between;margin:12px 0;font-size:11px}.weight-bar{height:7px;display:flex;border-radius:10px;overflow:hidden;margin:15px 0 22px}.weight-bar span:nth-child(1){width:20%;background:#a9b8e8}.weight-bar span:nth-child(2){width:50%;background:var(--blue)}.weight-bar span:nth-child(3){width:30%;background:var(--gold)}.steps{padding-left:18px;font-size:12px}.steps li{padding:7px 0}.hidden{display:none!important}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--navy);color:white;padding:14px 24px;border-radius:6px;font-size:12px;z-index:20;max-width:90%}.report{max-width:700px;margin:auto;background:white;padding:35px;border:1px solid var(--line)}.report .brand{justify-content:center}.report h2{text-align:center;font-size:28px}.report .plaid{height:7px;margin:25px 0}.report table{white-space:normal}.empty{text-align:center;padding:30px}.rule-list{font-size:13px;line-height:2}
@media(max-width:1050px){.wrap{width:calc(100% - 48px)}.hero{gap:30px}.hero h1{font-size:56px}.hero-art{padding:25px 20px}.shell{grid-template-columns:180px 1fr}aside{padding-left:12px;padding-right:12px}aside .brand{font-size:16px}aside .logo{width:30px;height:30px}.content{padding:24px 20px}.bottom-grid{grid-template-columns:1fr}.panel-head{flex-wrap:wrap;align-items:start}.ribbon{gap:30px}nav{gap:16px}}
@media(max-width:720px){.demo{padding:9px 12px;font-size:8px}.wrap{width:calc(100% - 36px)}header{padding:19px 0}.brand{font-size:19px}.logo{width:42px;height:42px}nav>a:not(.button){display:none}nav .button{font-size:10px;padding:10px}.hero{grid-template-columns:1fr;padding:24px 0 40px;gap:35px}.hero h1{font-size:57px}.lead{font-size:14px}.hero-art{min-height:450px}.large.logo{width:190px;height:190px}.ribbon{gap:13px;padding:20px 8px;font-size:12px}.section{padding-top:48px;padding-bottom:48px}.section-head{display:block}h2{font-size:32px}.programs,.split{grid-template-columns:1fr;gap:15px}.programs article>p:not(.eyebrow){min-height:0}.symbol{margin-bottom:20px}.approach{padding:40px 0}footer{flex-wrap:wrap}footer .brand{width:100%}.shell{display:block}aside{padding:14px 16px}aside .brand{font-size:19px}aside .plaid,.nav-label,.aside-bottom{display:none}.side-nav{flex-direction:row;overflow:auto;margin-top:14px;gap:3px}.side-nav button,.side-nav a{white-space:nowrap;padding:10px;font-size:10px}.side-nav button.active{box-shadow:inset 0 -2px var(--gold)}.portal-header{padding:14px 18px;font-size:10px}.content{padding:22px 14px}.heading{align-items:start;gap:10px}.heading h1{font-size:29px}.heading p{font-size:11px}.heading .button{padding:10px;font-size:10px}.stats{gap:8px}.stat{padding:14px 10px}.stat strong{font-size:25px}.stat small,.stat span{font-size:9px}.panel-head{padding:18px 15px}.controls{gap:8px}.controls select{font-size:11px;padding:8px}.table-tools{padding:14px;align-items:start}.table-tools input{width:170px}.table-tools .muted{max-width:100px;font-size:9px}.table-footer{padding:14px;flex-wrap:wrap}.bottom-grid{gap:0}.report{padding:20px 12px}.notice{font-size:10px}}
@media print{.demo,aside,.portal-header,.heading,.notice,.toast{display:none!important}.shell{display:block}.content{padding:0}.report{border:0;max-width:none}body{background:white}}
.class-controls{display:flex;gap:20px;align-items:end;padding:20px;flex-wrap:wrap}.class-controls label{font-size:9px;letter-spacing:1px;color:var(--muted)}.class-controls select{min-width:160px;letter-spacing:0;margin-top:5px}.grid-hint{padding:0 22px}.assessment-table{width:max-content;min-width:100%}.assessment-table th{white-space:normal;text-align:center;min-width:85px}.assessment-table td{text-align:center}.assessment-table .sticky-name{position:sticky;left:0;z-index:2;background:white;text-align:left;min-width:165px;max-width:165px;border-right:2px solid #dde3ef}.assessment-table thead .sticky-name{background:#f8f9fc;z-index:3}.assessment-table .group-head{background:#e8edfb;color:#2449ba;font-weight:bold;border-right:2px solid white;padding:12px}.assessment-table .group-exam{background:#f4eedf;color:#786130}.assessment-table .summary-cell{background:#f4f7fc;font-weight:bold;min-width:100px}.assessment-table input{width:58px;padding:9px 4px;border:1px solid #dce2ef;border-radius:4px;text-align:center;color:var(--navy);background:white}.assessment-table input:invalid{border:2px solid #b43c3c;background:#fff0f0}.assessment-table .maximum-row th{background:#f6f2e9;font-size:9px}.assessment-table .maximum-row input{display:block;margin:5px auto 0}.assessment-scroll{max-height:620px}.side-nav{align-items:stretch}.sheet-result{font-size:12px;min-width:100px}.class-controls .muted{margin-left:auto}
@media(max-width:720px){.class-controls{gap:12px;padding:15px}.class-controls label{flex:1;min-width:120px}.class-controls select{min-width:0;width:100%}.class-controls .muted{margin:0;width:100%}.assessment-table .sticky-name{min-width:125px;max-width:125px;padding-left:10px;font-size:10px}.table-tools{flex-wrap:wrap}.table-tools select{font-size:11px}.grid-hint{padding:0 14px}.assessment-scroll{max-height:550px}.side-nav{align-items:center}}
@media print{.class-controls{display:none!important}}
.school-hero{grid-template-columns:.9fr 1.1fr;gap:45px}.school-hero h1{font-size:clamp(42px,4.6vw,66px)}.school-motto{font:22px/1.5 Georgia,serif;max-width:440px;margin:25px 0 12px}.source-link{font-size:10px;color:var(--muted);text-decoration:underline;text-underline-offset:3px}.school-photo{margin:0;background:white;border:1px solid var(--line)}.school-photo img{display:block;width:100%;height:auto}.hero-photo{padding:14px}.hero-photo figcaption{background:var(--ivory);padding:12px;text-align:center;font-size:11px}.school-photo figcaption a{font-size:10px;color:var(--blue);text-decoration:underline;text-underline-offset:3px}.photo-divider{height:18px}.school-gallery{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start}.school-gallery figcaption{padding:20px 25px}.school-gallery h3{margin:0 0 8px}.school-gallery p{font-size:12px;color:var(--muted)}.visit a{overflow-wrap:anywhere}
@media(max-width:720px){.school-hero{grid-template-columns:1fr;gap:30px}.school-hero h1{font-size:45px}.school-motto{font-size:21px}.school-gallery{grid-template-columns:1fr}.hero-photo{padding:9px}.school-gallery figcaption{padding:18px}}
/* Visual reconstruction from the confirmed teacher uniform photos; not a fabric scan. */
.uniform-accent{height:32px;background:#18253d url("uniform-pattern.svg") repeat;background-size:192px 64px}
.portal aside .plaid,.portal .report .plaid{background:#18253d url("uniform-pattern.svg") repeat;background-size:192px 64px;height:30px}
.portal .portal-header{border-bottom:3px solid #a78f79}
.workspace-entry{background:white;border:1px solid var(--line);border-radius:6px;overflow:hidden}.entry-body{padding:30px}.entry-body h2{font-size:34px}.entry-body p,.entry-body li{color:var(--muted);font-size:13px}.entry-body ul{padding-left:18px;margin:20px 0 28px}.entry-body li{margin:8px 0}.entry-body .fine{font-size:10px}.landing-simple{padding-bottom:65px}.landing-simple h1{font-size:clamp(42px,4.5vw,64px)}#visit{border-top:1px solid var(--line)}
@media(max-width:720px){.landing-simple h1{font-size:45px}.entry-body{padding:24px}.portal aside .plaid{display:block;height:20px;margin:16px -16px 0}.portal .side-nav{margin-top:10px}}
/* Full-height textile backdrop; solid navigation surfaces protect text contrast. */
.portal aside{
  background-color:#132448;
  background-image:linear-gradient(rgba(13,27,52,.77),rgba(13,27,52,.77)),url("uniform-pattern.svg");
  background-size:auto,192px 64px;
  background-repeat:repeat;
  border-right:1px solid #a78f7959;
}
.portal aside .brand{
  position:relative;
  background:#132448;
  margin:-26px -18px 0;
  padding:26px 18px;
  min-height:94px;
}
.portal aside .plaid{margin:0 -18px 24px;border-top:1px solid #d8d2b84d;border-bottom:1px solid #d8d2b84d}
.portal .nav-label{color:#e2d8c4;background:#132448ed;border-radius:4px;padding:8px 12px;margin:0 0 8px}
.portal .side-nav{gap:9px}
.portal .side-nav button,.portal .side-nav a{background:#132448f2;color:#e8edf7;border:1px solid #d8d2b81a;padding:13px 12px;box-shadow:0 3px 10px #07142620}
.portal .side-nav button:hover,.portal .side-nav a:hover{background:#263958;border-color:#b79b6170}
.portal .side-nav button.active{background:#293c5b;color:#fff;border-color:#b79b6180;box-shadow:inset 3px 0 #c8ae76,0 3px 10px #07142620}
.portal .aside-bottom{background:#132448f2;color:#dce3ef;border:1px solid #d8d2b829;border-radius:5px;margin-top:auto;padding:18px 12px}
.portal .aside-bottom hr{border:0;border-top:1px solid #b79b614d;margin:14px 0}
@media(min-width:721px) and (max-width:1050px){.portal aside .brand{margin-left:-12px;margin-right:-12px;padding-left:12px;padding-right:12px}.portal aside .plaid{margin-left:-12px;margin-right:-12px}}
@media(max-width:720px){.portal aside .brand{margin:-14px -16px 0;padding:14px 16px;min-height:0}.portal aside .plaid{margin:0 -16px 12px;height:20px}.portal .side-nav{margin-top:0;gap:7px}.portal .side-nav button,.portal .side-nav a{padding:10px}.portal .side-nav button.active{box-shadow:inset 0 -2px #c8ae76}.portal .aside-bottom{display:none}}

/* Detailed Jovy reference applies only to the teacher workspace. */
.portal aside{background-image:linear-gradient(rgba(13,27,52,.68),rgba(13,27,52,.68)),url("jovy-uniform-pattern.svg")}
.portal aside .plaid,.portal .report .plaid{background-image:url("jovy-uniform-pattern.svg")}

/* Royal-blue gingham complements the textile in reserved decorative bands. */
.royal-check-accent,.portal .portal-header::after{
 background-color:#f5f3eb;
 background-image:linear-gradient(90deg,#2449ba65 50%,transparent 50%),linear-gradient(#2449ba65 50%,transparent 50%);
 background-size:24px 24px;
 border-top:1px solid #b79b6199;border-bottom:1px solid #b79b6199;
}
.royal-check-accent{height:48px}
.portal .portal-header{position:relative;border-bottom:0;padding-bottom:30px}
.portal .portal-header::after{content:"";position:absolute;left:0;right:0;bottom:0;height:12px;pointer-events:none}
@media(max-width:720px){.royal-check-accent{height:36px}.portal .portal-header{padding-bottom:26px}}
.portal .portal-header::after{background-size:12px 12px}
