/* ══════════════════════════════════════════════════════════════
   FWGS School Policies — the policy reader.
   GENERATED by tools/fwgs-policies/build.mjs from
   tools/fwgs-policies/policies.css — edit that file, then rebuild.

   Layout: the policy list on the left, the open policy on the right,
   each section a native <details> so a reader opens only what they need.
   Components (.pol …) are the Academic Integrity page's original design
   vocabulary, scoped under .pol and laid out by container width, so the
   same blocks work in the reading panel at any screen size.
══════════════════════════════════════════════════════════════ */

.pr-hero{background:linear-gradient(135deg,var(--blue-dark) 0%,var(--blue) 100%);padding:44px 0}
.pr-hero .container{display:flex;flex-direction:column;gap:10px}
.pr-crumbs{font-family:'Montserrat',sans-serif;font-size:.78rem;font-weight:700;letter-spacing:.04em;color:rgba(255,255,255,.85)}
.pr-crumbs a{color:#fff;text-decoration:underline;text-underline-offset:3px}
.pr-hero h1,.pr-hero .pr-hero-title{font-family:'Montserrat',sans-serif;color:#fff;font-size:clamp(1.8rem,4vw,2.8rem);font-weight:900;line-height:1.1}
.pr-hero p{color:rgba(255,255,255,.88);font-size:1rem;line-height:1.7;max-width:640px}

.pr-wrap{max-width:1240px;margin:0 auto;padding:40px 24px 56px;display:flex;flex-wrap:wrap;gap:32px;align-items:flex-start}

/* the list */
.pr-nav{flex:1 1 270px;max-width:330px;min-width:0}
.pr-nav>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;font-family:'Montserrat',sans-serif;font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--text);padding:0 4px 12px}
.pr-nav>summary::-webkit-details-marker{display:none}
.pr-nav>summary svg{width:18px;height:18px;fill:none;stroke:var(--blue);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s}
.pr-nav[open]>summary svg{transform:rotate(180deg)}
.pr-list{list-style:none;display:flex;flex-direction:column;gap:8px}
.pr-list-head{font-family:'Montserrat',sans-serif;font-size:.7rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--blue);margin:6px 4px 10px}
.pr-list-head span{color:#6B7280;font-weight:700}
.pr-list+.pr-list-head{margin-top:24px}
.pr-item{display:flex;align-items:center;gap:12px;min-height:48px;padding:10px 14px;border:1px solid var(--border);border-radius:12px;background:#fff;color:var(--text);transition:border-color .15s,box-shadow .15s}
.pr-item:hover{border-color:var(--blue);box-shadow:0 6px 20px rgba(0,91,170,.10)}
.pr-item:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.pr-ic{flex:0 0 36px;width:36px;height:36px;border-radius:9px;background:rgba(0,91,170,.08);display:flex;align-items:center;justify-content:center}
.pr-ic svg{width:18px;height:18px;fill:none;stroke:var(--blue);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.pr-name{flex:1 1 auto;min-width:0;font-family:'Montserrat',sans-serif;font-size:.86rem;font-weight:700;line-height:1.3}
.pr-tag{flex:0 0 auto;font-family:'Montserrat',sans-serif;font-size:.62rem;font-weight:800;letter-spacing:.06em;color:#4B5563;border:1px solid #D1D5DB;border-radius:4px;padding:2px 5px}
.pr-item[aria-current="page"]{border:2px solid var(--blue);background:#EAF2FA;padding:9px 13px}
.pr-item[aria-current="page"] .pr-ic{background:var(--blue)}
.pr-item[aria-current="page"] .pr-ic svg{stroke:#fff}
.pr-item[aria-current="page"] .pr-name{color:var(--blue)}

/* the reading panel */
.pr-panel{flex:999 1 560px;min-width:0;background:#fff;border:1px solid var(--border);border-radius:18px;box-shadow:0 4px 24px rgba(0,0,0,.06);overflow:hidden}
.pr-head{padding:26px clamp(18px,3.5vw,32px);border-bottom:1px solid var(--border);display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px}
.pr-head h1,.pr-head h2{font-size:clamp(1.4rem,3vw,2rem);font-weight:900;line-height:1.15;color:var(--text)}
.pr-sub{font-size:.95rem;color:#4B5563;margin-top:6px;max-width:560px;line-height:1.6}
.pr-tools{display:flex;flex-wrap:wrap;gap:8px}
.pr-btn{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-family:'Montserrat',sans-serif;font-size:.78rem;font-weight:700;padding:0 16px;border-radius:22px;border:1.5px solid #D1D5DB;background:#fff;color:var(--text-mid);cursor:pointer;white-space:nowrap}
.pr-btn:hover{border-color:var(--blue);color:var(--blue)}
.pr-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.pr-btn--solid{background:var(--blue);border-color:var(--blue);color:#fff}
.pr-btn--solid:hover{background:var(--blue-dark);border-color:var(--blue-dark);color:#fff}
.pr-btn[hidden]{display:none}

/* one section */
.pr-sec{border-bottom:1px solid var(--border)}
.pr-sec:last-of-type{border-bottom:0}
.pr-sec>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:44px;padding:18px clamp(18px,3.5vw,32px);font-family:'Montserrat',sans-serif;font-size:1.02rem;font-weight:800;color:var(--text);line-height:1.3}
.pr-sec>summary::-webkit-details-marker{display:none}
.pr-sec>summary:hover{color:var(--blue);background:#F8FAFC}
.pr-sec>summary:focus-visible{outline:3px solid var(--blue);outline-offset:-3px}
.pr-sec>summary svg{flex:0 0 20px;width:20px;height:20px;fill:none;stroke:#6B7280;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s}
.pr-sec[open]>summary svg{transform:rotate(180deg);stroke:var(--blue)}
.pr-sec--alert>summary{color:var(--red)}
.pr-group{margin:0;padding:22px clamp(18px,3.5vw,32px) 10px;background:#F5F6F8;border-bottom:1px solid var(--border);font-family:'Montserrat',sans-serif;font-size:.74rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--blue)}
.pr-body{padding:6px clamp(18px,3.5vw,32px) 30px}

/* hub intro + poster-only policies */
.pr-intro{padding:clamp(22px,4vw,40px)}
.pr-intro p{font-size:1.02rem;line-height:1.75;color:var(--text-mid);max-width:620px}
.pr-intro p+p{margin-top:12px}
.pr-intro-hint{display:flex;align-items:center;gap:10px;margin-top:22px;font-family:'Montserrat',sans-serif;font-size:.82rem;font-weight:700;color:var(--blue)}
.pr-intro-hint svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.pr-poster{padding:clamp(22px,4vw,40px)}
.pr-pdf{display:block;width:100%;height:min(1400px,170vw);margin-top:22px;border:1px solid var(--border);border-radius:10px;background:#F5F6F8}
.pr-pdf-fallback{padding:24px;font-size:.95rem;color:var(--text-mid)}
.pr-poster p{font-size:1.02rem;line-height:1.75;color:var(--text-mid);max-width:620px;margin-bottom:20px}

@media(max-width:900px){
  .pr-wrap{padding:24px 16px 40px;gap:20px}
  .pr-nav{max-width:none;flex-basis:100%}
}

/* print: the policy only, every section open (the page script opens them) */
@media print{
  .util-bar,.site-header,#cms-announcement,.nav-panel,.pr-hero,.pr-nav,.pr-tools,.footer,.pr-apply{display:none!important}
  body{padding-top:0!important}
  .pr-wrap{display:block;padding:0}
  .pr-panel{border:0;box-shadow:none;border-radius:0}
  .pr-sec>summary svg{display:none}
  .pr-sec{break-inside:auto}
}

/* ── the policy components: Academic Integrity's original design, scoped ── */
.pol{container-type:inline-size;container-name:pol;
  --blue:#005BAA;--blue-dark:#00407a;--red:#B8292F;--red-dark:#7d171d;--gold:#F2C418;
  --sky:#EAF2FA;--rose:#FBECEC;--ink:#1C1C2E;--mid:#374151;--line:#E5E7EB;--white:#fff;
  --f-head:'Montserrat',system-ui,sans-serif;--f-body:'Nunito',system-ui,sans-serif;
  font-family:var(--f-body);font-size:16px;line-height:1.6;color:var(--ink)}
.pol a{color:var(--blue);text-decoration:underline;text-underline-offset:2px}
.pol .sec+.sec,.pol .grid2+.sec,.pol .sec+.grid2{margin-top:26px}
.pol .h3{font:800 .95rem/1.25 var(--f-head);color:var(--blue);text-transform:uppercase;letter-spacing:.01em;margin:22px 0 12px}
.pol .h3:first-child{margin-top:0}
.pol .h3--red{color:var(--red)}
.pol .tint{background:var(--sky);padding:16px 18px}
.pol .tint--rose{background:var(--rose)}
.pol p+p{margin-top:10px}
.pol h1,.pol h2,.pol h3,.pol h4,.pol p,.pol ul,.pol ol,.pol table{margin:0}
.pol ul,.pol ol{padding:0;list-style:none}
.pol .ic{width:1em;height:1em;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.pol .h2{position:relative;font:800 clamp(1.1rem,2.4vw,1.45rem)/1.2 var(--f-head);color:var(--blue);text-transform:uppercase;letter-spacing:.01em;padding-bottom:10px;margin-bottom:18px;border-bottom:2px solid var(--blue)}
.pol .h2--red{color:var(--red);border-color:var(--red)}
.pol .h2::before{content:"";position:absolute;left:-12px;top:-10px;width:16px;height:16px;border-left:3px solid var(--blue);border-top:3px solid var(--blue)}
.pol .h2--red::before{border-color:var(--red)}
.pol .grid2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,4vw,48px)}
.pol .lead{margin-bottom:14px}
.pol .rows>li{display:flex;align-items:center;gap:14px;padding:11px 0;border-bottom:2px solid var(--gold)}
.pol .rows>li:first-child{padding-top:4px}
.pol .rows--red>li{border-color:var(--red);color:var(--red)}
.pol .rows--red .badge{background:var(--red)}
.pol .badge{width:28px;height:28px;border-radius:50%;background:var(--blue);color:var(--white);display:grid;place-items:center;flex:none}
.pol .badge .ic{width:15px;height:15px;stroke-width:3}
.pol .badge--red{background:var(--red)}
.pol .gold{width:34px;height:34px;border-radius:50%;background:var(--gold);color:var(--ink);display:grid;place-items:center;flex:none}
.pol .gold .ic{width:18px;height:18px}
.pol .num{width:30px;height:30px;border-radius:50%;background:var(--blue);color:var(--white);display:grid;place-items:center;flex:none;font:800 .85rem var(--f-head)}
.pol .num--red{background:var(--red)}
.pol .is-red{color:var(--red);border-color:var(--red)!important}
.pol .principles{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-bottom:22px}
.pol .principles li{display:flex;gap:14px;align-items:flex-start}
.pol .sub{font:700 .78rem var(--f-head);color:var(--blue);text-transform:uppercase;letter-spacing:.02em;margin-bottom:6px}
.pol .five{display:grid;grid-template-columns:repeat(5,1fr);border-top:2px solid var(--gold);border-bottom:2px solid var(--gold)}
.pol .five li{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 6px;font:800 .85rem var(--f-head);text-transform:uppercase;text-align:center;border-left:2px solid var(--gold)}
.pol .five li:first-child{border-left:0}
.pol .note{border:2px solid var(--blue);padding:12px 16px;margin-top:14px;background:var(--white)}
.pol .note h3{font:800 .78rem var(--f-head);color:var(--blue);text-transform:uppercase;margin-bottom:4px}
.pol .dots{display:grid;grid-template-columns:repeat(4,1fr);gap:0 20px;margin:14px 0}
.pol .dots li{display:flex;align-items:center;gap:10px;padding:9px 2px;border-bottom:2px solid var(--gold);font-weight:600}
.pol .dots li::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--gold);flex:none}
.pol .callouts{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.pol .callout{display:flex;align-items:center;gap:14px;padding:14px 16px;font-weight:700;background:var(--sky)}
.pol .callout--warn{background:var(--rose);color:var(--red);text-transform:uppercase;font-size:.9rem}
.pol .callout--warn .ic{width:26px;height:26px}
.pol .defs{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}
.pol .def{padding:16px 20px;color:var(--white);background:var(--blue)}
.pol .def--red{background:var(--red)}
.pol .def h3{font:800 .9rem var(--f-head);text-transform:uppercase;margin-bottom:8px}
.pol .cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.pol .card{background:var(--white);border-top:4px solid var(--red);padding:12px 16px 16px}
.pol .card--b{border-color:var(--blue)}
.pol .card h3{font:800 .9rem/1.25 var(--f-head);color:var(--red);text-transform:uppercase;margin-bottom:6px}
.pol .card--b h3{color:var(--blue)}
.pol .roles{display:grid;grid-template-columns:repeat(3,1fr);gap:22px 24px}
.pol .role{border-bottom:2px solid var(--gold);padding-bottom:14px}
.pol .role h3{font:800 .85rem var(--f-head);text-transform:uppercase;color:var(--white);background:var(--blue);padding:8px 14px;margin-bottom:12px}
.pol .role--red h3{background:var(--red)}
.pol .bul>li{position:relative;padding-left:16px;margin-bottom:8px;font-size:.95rem}
.pol .bul>li::before{content:"";position:absolute;left:2px;top:.55em;width:6px;height:6px;border-radius:50%;background:var(--blue)}
.pol .role--red .bul>li::before{background:var(--red)}
.pol .tag{display:inline-block;font:800 .8rem var(--f-head);text-transform:uppercase;color:var(--white);background:var(--blue);padding:7px 16px;margin:18px 0 0}
.pol .tag--red{background:var(--red)}
.pol .tag--first{margin-top:0}
.pol .aibox{margin-top:18px;background:var(--blue);color:var(--white);padding:18px 20px}
.pol .aibox h3{font:800 .95rem/1.3 var(--f-head);text-transform:uppercase;margin-bottom:10px}
.pol .aibox .sample{margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.35);font-size:.9rem}
.pol .tablewrap{overflow-x:auto}
.pol table{width:100%;border-collapse:collapse;background:var(--white)}
.pol th,.pol td{padding:12px 14px;text-align:left;vertical-align:top;font-size:.95rem}
.pol thead th{font:800 .85rem var(--f-head);text-transform:uppercase;color:var(--white);background:var(--blue)}
.pol thead th.r{background:var(--red)}
.pol thead th:first-child{background:transparent}
.pol tbody th{width:130px;font:800 .8rem var(--f-head);text-transform:uppercase;color:var(--blue)}
.pol tbody tr{border-bottom:2px solid var(--gold)}
.pol tbody td+td,.pol thead th+th{border-left:2px solid var(--gold)}
.pol .chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:14px;font:800 .75rem var(--f-head);text-transform:uppercase}
.pol .chips span{background:var(--sky);padding:5px 10px}
.pol .anat{display:grid;grid-template-columns:1fr auto 1.2fr;align-items:stretch;margin-bottom:12px}
.pol .anat>div{padding:14px 16px}
.pol .anat .a{background:var(--blue);color:var(--white)}
.pol .anat .arr{background:var(--gold);display:grid;place-items:center;padding:0 12px}
.pol .anat .b{background:var(--sky)}
.pol .anat small{display:block;font:800 .7rem var(--f-head);text-transform:uppercase;margin-bottom:6px}
.pol .anat .b small{color:var(--blue)}
.pol .anat strong{font:800 1.05rem var(--f-head)}
.pol .term{display:inline-block;font:800 .8rem var(--f-head);text-transform:uppercase;color:var(--white);background:var(--red);padding:6px 16px;margin-top:14px}
.pol .term+p{padding:8px 0 12px 16px;border-bottom:2px solid var(--gold)}
.pol .small{font-size:.85rem}
.pol .steps{display:flex;align-items:flex-end;gap:6px;border-bottom:3px solid var(--gold)}
.pol .step{flex:1;padding:12px 14px;color:var(--white);background:var(--blue);font-size:.85rem;line-height:1.35}
.pol .step b{display:block;font:800 .8rem var(--f-head);text-transform:uppercase;margin-bottom:4px}
.pol .step--red{background:var(--red)}
.pol .s7{min-height:150px}
.pol .s8{min-height:130px}
.pol .s9{min-height:120px}
.pol .s10{min-height:135px}
.pol .s11{min-height:150px}
.pol .s12{min-height:165px}
.pol .proc{display:grid;grid-template-columns:repeat(6,1fr);gap:14px}
.pol .pstep{border-top:4px solid var(--blue);padding-top:10px;font-size:.88rem}
.pol .pstep.r{border-color:var(--red)}
.pol .pstep h3{display:flex;align-items:center;gap:8px;font:800 .8rem var(--f-head);text-transform:uppercase;margin-bottom:8px}
.pol .pstep h3 .num{width:26px;height:26px;font-size:.78rem}
.pol .foot{color:var(--blue);font-weight:700;margin-top:14px;font-size:.92rem}
.pol .pill{display:inline-block;font:800 .8rem var(--f-head);text-transform:uppercase;color:var(--white);background:var(--red);padding:7px 16px;margin:6px 0 10px}
.pol .ladder{margin-top:6px}
.pol .rung{display:grid;grid-template-columns:150px 1fr;background:var(--white);border-top:2px solid var(--gold)}
.pol .rung .who{padding:14px 16px;color:var(--white);font:800 .72rem var(--f-head);text-transform:uppercase;display:flex;flex-direction:column;justify-content:center}
.pol .rung .who i{font:900 1.5rem var(--f-head);font-style:normal;line-height:1}
.pol .rung p{padding:12px 16px;font-size:.92rem}
.pol .r1 .who{background:var(--blue)}
.pol .r2 .who{background:var(--gold);color:var(--ink)}
.pol .r3 .who{background:var(--red)}
.pol .r4 .who{background:var(--red-dark)}
.pol .rung:last-child{border-bottom:2px solid var(--gold)}
.pol .steps6{display:grid;grid-template-columns:1fr 1fr;gap:0 48px}
.pol .steps6 .rows>li{color:var(--ink)}
.pol .appx{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}
.pol .appx li{padding:9px 2px;border-bottom:2px solid var(--gold);font-weight:700;font-size:.92rem}
.pol .closing{text-align:center;padding:42px 0 36px;font:800 clamp(.95rem,2.2vw,1.2rem)/1.35 var(--f-head);text-transform:uppercase;letter-spacing:.01em}
@container pol (max-width:860px){
.pol .cards,.pol .roles{grid-template-columns:1fr 1fr}
.pol .proc{grid-template-columns:repeat(3,1fr)}
.pol .dots{grid-template-columns:repeat(2,1fr)}
.pol .five li{font-size:.78rem;padding:12px 4px}
.pol .steps{flex-wrap:wrap}
.pol .step{flex:1 1 30%;min-height:0!important}
}
@container pol (max-width:620px){
.pol .grid2,.pol .defs,.pol .callouts,.pol .appx,.pol .cards,.pol .roles,.pol .principles,.pol .steps6{grid-template-columns:1fr}
.pol .proc{grid-template-columns:1fr 1fr}
.pol .five{grid-template-columns:1fr 1fr}
.pol .five li{border-left:0!important}
.pol .five li:nth-child(even){border-left:2px solid var(--gold)!important}
.pol .five li:nth-child(n+3){border-top:2px solid var(--gold)}
.pol .five li:last-child{grid-column:1/-1;border-left:0!important}
.pol .dots{grid-template-columns:1fr 1fr;gap:0 14px}
.pol .h2::before{left:-8px}
.pol .steps{display:grid;grid-template-columns:1fr}
.pol .anat{grid-template-columns:1fr}
.pol .anat .arr{padding:6px;transform:rotate(90deg)}
.pol .rung{grid-template-columns:1fr}
.pol .rung .who{flex-direction:row;align-items:center;justify-content:flex-start;gap:12px}
.pol table,.pol thead,.pol tbody,.pol tr,.pol th,.pol td{display:block}
.pol thead{display:none}
.pol tbody tr{padding:10px 0}
.pol tbody th{width:auto;padding:6px 12px}
.pol tbody td{padding:6px 12px;border-left:0!important}
.pol tbody td::before{content:attr(data-p);display:block;font:800 .72rem var(--f-head);text-transform:uppercase;color:var(--blue);margin-bottom:2px}
.pol tbody td[data-p="PYP"]::before,.pol tbody td[data-p^="DP"]::before{color:var(--red)}
}.pol .closing{padding:36px clamp(18px,3.5vw,32px) 32px;border-top:1px solid var(--line)}
.pol .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
