/* /policy/ — builds on rubric.css; same palette and tokens */
.pol .lead p:last-child{margin-block-end:0}
.pol .after{margin-block-start:var(--wa-space-xl);max-width:none}
.pol #dispute .rb-h{max-width:none}

/* dispute: two ways in */
.doors{display:grid;gap:var(--wa-space-m)}
.door{display:flex;gap:var(--wa-space-m);align-items:flex-start;padding:var(--wa-space-l)}
.door-i{flex:none;width:2.5rem;height:2.5rem;display:grid;place-items:center;border-radius:var(--wa-border-radius-l);background:var(--surface-2);color:var(--ink);font-size:1.05rem}
.door-n{display:block;color:var(--ink);font-weight:var(--wa-font-weight-semibold);margin-block-end:var(--wa-space-2xs)}
.door p{margin:0;color:var(--ink-2);font-size:var(--wa-font-size-s)}
.door code{font-size:.9em}

/* dispute: a card goes listed -> disputed -> re-read, on a 9s loop */
.dcard{display:grid;gap:var(--wa-space-m);align-content:start}
.dc-head{display:flex;align-items:center;gap:var(--wa-space-s)}
.dc-name{flex:1;display:grid;gap:.4rem}
.dc-head wa-badge.grade{font-size:var(--wa-font-size-l);min-width:2.2em;padding-block:.3em;border-radius:var(--wa-border-radius-l)}
.dc-st{display:grid;justify-items:end}
.dc-st code{grid-area:1/1;display:inline-flex;align-items:center;gap:var(--wa-space-2xs);font-family:var(--wa-font-family-code);font-size:var(--wa-font-size-xs);font-weight:var(--wa-font-weight-semibold);color:var(--ink-2);background:var(--surface-2);border-radius:var(--wa-border-radius-pill);padding:.2em .7em}
.dc-d{background:color-mix(in srgb,var(--grade-D) 30%,var(--surface))!important;color:var(--ink)!important}
.dc-d wa-icon{transform-origin:10% 90%;animation:flag 2.4s ease-in-out infinite}
.dc-l{animation:dcL 9s ease-in-out infinite}
.dc-d{animation:dcD 9s ease-in-out infinite}
.dc-vs,.dc-rev{display:flex;align-items:flex-start;gap:var(--wa-space-s);padding:var(--wa-space-m);border-radius:var(--wa-border-radius-l)}
.dc-vs{background:var(--ground);border:var(--wa-border-width-s) dashed var(--border);animation:dcVs 9s cubic-bezier(.16,1,.3,1) infinite}
.dc-rev{background:var(--surface-2);animation:dcRev 9s cubic-bezier(.16,1,.3,1) infinite}
.dc-k,.dc-who{flex:none;color:var(--ink-3);font-size:.95rem;padding-top:.1rem}
.dc-lines{flex:1;display:grid;gap:.45rem;padding-top:.3rem}
.dc-ok{flex:none;width:1.5rem;height:1.5rem;display:grid;place-items:center;border-radius:50%;background:var(--grade-A);color:var(--ink);font-size:.7rem;animation:dcOk 9s cubic-bezier(.34,1.56,.64,1) infinite}
.sk{display:block;height:.5rem;border-radius:var(--wa-border-radius-pill);background:var(--border)}
.sk.w4{width:40%}.sk.w5{width:50%}.sk.w6{width:60%}.sk.w7{width:70%}.sk.w8{width:80%}.sk.w9{width:90%}
.dc-name .sk:first-child{height:.65rem;background:var(--ink-3);opacity:.5}
@keyframes dcL{0%,14%{opacity:1;transform:none}19%,96%{opacity:0;transform:translateY(-4px)}100%{opacity:1}}
@keyframes dcD{0%,16%{opacity:0;transform:translateY(4px) scale(.9)}22%,96%{opacity:1;transform:none}100%{opacity:0}}
@keyframes dcVs{0%,20%{opacity:0;transform:translateY(10px)}29%,96%{opacity:1;transform:none}100%{opacity:0}}
@keyframes dcRev{0%,48%{opacity:0;transform:translateY(10px)}56%,96%{opacity:1;transform:none}100%{opacity:0}}
@keyframes dcOk{0%,60%{opacity:0;transform:scale(.3)}66%,96%{opacity:1;transform:none}100%{opacity:0}}

/* what changes a grade, and what does not */
.pol #changes{padding-block:var(--wa-space-3xl)}
.ledgers{display:grid;gap:var(--wa-space-m)}
@media(min-width:56rem){.ledgers{grid-template-columns:1fr 1fr}}
.ledger h3{display:flex;align-items:center;gap:var(--wa-space-s);font-size:var(--wa-font-size-l);font-weight:var(--wa-font-weight-semibold);color:var(--ink);margin:0 0 var(--wa-space-m)}
.ledger ul{list-style:none;margin:0;padding:0;display:grid;gap:var(--wa-space-s)}
.ledger li{position:relative;padding-inline-start:1.4em;color:var(--ink-2);font-size:var(--wa-font-size-s);line-height:1.55}
.ledger li::before{content:"";position:absolute;left:.25em;top:.6em;width:.45em;height:.45em;border-radius:50%;background:var(--grade-A)}
.ledger-no li::before{background:var(--grade-F)}
.ledger-no .tile{background:var(--grade-F);color:var(--ink)}

/* graduation */
.gradp{display:flex;flex-direction:column;align-items:center;gap:var(--wa-space-m);padding-block:var(--wa-space-2xl)}
.gradp .sv{height:3.6rem;position:relative}
.gradp .sv wa-badge.grade{font-size:var(--wa-font-size-2xl)}
.g-wrap{position:relative;display:inline-block}
.g-star{position:absolute;top:-.7rem;right:-.9rem;z-index:1;color:var(--grade-C);font-size:1.4rem;filter:drop-shadow(0 1px 2px rgb(26 25 23 / .25));animation:gStar 4s cubic-bezier(.34,1.56,.64,1) infinite}
.gradp code{display:inline-flex;align-items:center;gap:var(--wa-space-xs);font-family:var(--wa-font-family-code);font-weight:var(--wa-font-weight-semibold);color:var(--ink);font-size:var(--wa-font-size-s)}
@keyframes gStar{0%,55%{opacity:0;transform:scale(.2) rotate(-40deg)}66%,92%{opacity:1;transform:none}100%{opacity:0}}

/* sisyphus */
.botp{display:grid;padding-block:var(--wa-space-2xl) var(--wa-space-3xl)}

.nd-person .nd-i{box-shadow:0 0 0 3px var(--surface),0 0 0 5px var(--grade-A)}

/* contact */
.contacts{display:grid;max-width:46rem}
.crow{display:grid;grid-template-columns:auto 13rem minmax(0,1fr);align-items:center;gap:var(--wa-space-m);padding-block:var(--wa-space-m);border-bottom:var(--wa-border-width-s) solid var(--border)}
.crow:first-child{border-top:var(--wa-border-width-s) solid var(--border)}
.crow .tile{background:var(--surface-2);color:var(--ink)}
.c-addr{font-family:var(--wa-font-family-code);font-size:var(--wa-font-size-s)}
.c-what{color:var(--ink-2);font-size:var(--wa-font-size-s)}
@media(max-width:40rem){.crow{grid-template-columns:auto minmax(0,1fr)}.c-what{grid-column:2}}

@media(prefers-reduced-motion:reduce){
  .dc-l,.dc-d,.dc-vs,.dc-rev,.dc-ok,.g-star,.dc-d wa-icon{animation:none!important}
  .dc-l{opacity:0}.dc-d,.dc-vs,.dc-rev,.dc-ok,.g-star{opacity:1}
}
