/* Commons tools: incident plan builder, security self-assessment, templates. Loaded only on those pages. */
html:not(.js) .js-only{display:none!important}
.js .no-js-only{display:none!important}

.tool-privacy{display:flex;gap:.8rem;align-items:flex-start;padding:1rem 1.2rem;border-radius:14px;background:var(--callout-leaf);border:1px solid var(--callout-leaf-line);color:var(--callout-leaf-ink);font-size:.92rem;line-height:1.5;margin:1.6rem 0}
.tool-privacy svg{flex:none;margin-top:.12rem;color:var(--tick)}
.tool-privacy p,.sa-side .tool-privacy p,.tpl-side .tool-privacy p{margin:0;color:inherit}
.tool-privacy strong{color:inherit;font-weight:650}

/* ---------- Incident plan builder ---------- */
.ip-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(2rem,1rem + 3vw,4.5rem);align-items:start}
html:not(.js) .ip-layout{grid-template-columns:minmax(0,1fr);max-width:880px;margin:0 auto}
.ip-form .tool-privacy{margin:0 0 .2rem}
.ip-form{gap:1.25rem}
.ip-form fieldset.ip-step{display:block;padding:clamp(1.3rem,1rem + 1.2vw,2rem);border:1px solid var(--line);border-radius:20px;background:var(--paper-3)}
.ip-step > legend{float:left;width:100%;display:flex;align-items:baseline;gap:.8rem;margin:0 0 1rem;padding:0}
.ip-step > legend + *{clear:both}
.ip-step > * + *{margin-top:1.2rem}
.ip-step .row > *{margin:0}
.ip-num{font-family:var(--f-mono);font-size:.74rem;letter-spacing:.08em;color:var(--sun-ink);transform:translateY(-.15em)}
.ip-intro{color:var(--muted);font-size:.93rem}
.ip-intro a{color:var(--text);text-decoration-color:var(--sun)}
.ip-sub{font:600 .74rem/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding-top:1.3rem;margin-top:1.6rem;border-top:1px solid var(--line)}
.ip-sub:first-child{border-top:0;padding-top:0}
.ip-note{margin-bottom:0;font-size:.88rem;color:var(--muted)}
.ip-form .field textarea{min-height:128px}
.ip-preview{position:sticky;top:96px}
html:not(.js) .ip-preview{position:static}
.ip-bar{display:flex;justify-content:space-between;align-items:center;gap:1rem 1.5rem;flex-wrap:wrap;margin-bottom:1rem}
.ip-bar .mono{margin:0 0 .2rem;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--sun-ink)}
.ip-saved{margin:0;font-size:.88rem;color:var(--muted)}
.ip-actions{display:flex;flex-wrap:wrap;gap:.6rem}
.ip-actions .btn{height:46px;padding:0 1.25rem;font-size:.92rem}
.sheet-frame{max-height:calc(100vh - 200px);overflow:auto;outline-offset:3px;border-radius:18px;background:var(--paper-2);border:1px solid var(--line);padding:clamp(.7rem,.4rem + 1.4vw,1.6rem);overscroll-behavior:contain}
html:not(.js) .sheet-frame{max-height:none}
.ip-tip{margin:.9rem 0 0;font-size:.85rem;color:var(--muted)}
@media (max-width:980px){.ip-layout{grid-template-columns:minmax(0,1fr)}.ip-preview{position:static}.sheet-frame{max-height:none}}

/* The sheet: a printed page, on screen and on paper */
.sheet{--ink:#13201b;--rule:#9a917f;--soft:#5b665f;--sun-ink:#8f5300;background:#fff;color:var(--ink);font-size:13px;line-height:1.42;padding:clamp(1.1rem,.6rem + 2vw,2.2rem);border-top:5px solid var(--night);box-shadow:0 1px 2px rgba(19,32,27,.08),0 14px 40px -18px rgba(19,32,27,.35);-webkit-print-color-adjust:exact;print-color-adjust:exact}
.sheet h3{font:600 .66rem/1.2 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink);margin:0 0 .55rem;padding-bottom:.4rem;border-bottom:1px solid var(--ink)}
.sheet dl{margin:0}
.sheet dt{font:500 .62rem/1.3 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--soft)}
.sheet dd{margin:0}
.sheet-head{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:1rem 1.6rem;align-items:end;padding-bottom:1rem;margin-bottom:1rem;border-bottom:1px solid var(--rule)}
.sheet-kicker{display:flex;align-items:center;gap:.5rem;margin:0 0 .45rem;font:600 .66rem/1 var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--sun-ink)}
.sheet-kicker::before{content:"";width:.5rem;height:.5rem;border-radius:50%;background:var(--sun)}
.sheet-org{font-family:var(--f-display);font-weight:340;font-size:clamp(1.5rem,1.2rem + 1vw,2.05rem);line-height:1.08;letter-spacing:-.015em;margin:0;overflow-wrap:anywhere}
.sheet-meta{display:grid;gap:.5rem}
.sheet-meta dd{font-size:.9em}
.sheet-start{background:#fbefd9;border:1px solid #efd6a8;border-radius:8px;padding:.8rem .95rem .85rem;margin-bottom:1rem}
.sheet-start h3{border:0;padding:0;margin-bottom:.5rem;color:#5c3a05}
.sheet-start ol{list-style:none;counter-reset:st;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem 1rem}
.sheet-start li{counter-increment:st;position:relative;padding-left:1.45rem;font-size:.86em;line-height:1.35;color:#3d2a0c}
.sheet-start li::before{content:counter(st);position:absolute;left:0;top:-.08rem;font-family:var(--f-display);font-size:1.25rem;line-height:1;color:var(--sun-ink)}
.sheet-start strong{display:block;color:#21170a}
.sheet-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1rem 1.5rem}
.sheet-wide{grid-column:1/-1}
.sheet-people{display:grid;gap:.6rem}
.sheet-people dd{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.1rem .8rem;font-size:1.05em;font-weight:600}
.sheet-people dd .fill:empty{width:auto;flex:1 1 4em}
.sheet-people .num{font-weight:500}
.sheet-people .num .fill:empty{width:7.5em}
.sheet .num{font-family:var(--f-mono);font-size:.94em;letter-spacing:-.01em;white-space:nowrap}
.sheet-dl{display:grid;gap:.45rem}
.sheet-dl > div{display:grid;grid-template-columns:7.2rem minmax(0,1fr);gap:.6rem;align-items:baseline}
.sheet table{width:100%;border-collapse:collapse;table-layout:fixed}
.sheet thead th{font:500 .6rem/1.2 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--soft);text-align:left;padding:0 .5rem .3rem 0}
.sheet thead th:first-child{width:24%}
.sheet thead th:last-child{width:34%}
.sheet tbody th,.sheet tbody td{text-align:left;vertical-align:top;padding:.42rem .5rem .42rem 0;border-top:1px solid #e3ddd0}
.sheet tbody th{font-weight:600}
.sheet td{overflow-wrap:anywhere}
.sheet td.num{white-space:normal}
.sheet .sub{display:block;font-size:.85em;color:var(--soft);margin-top:.15rem}
.fill{overflow-wrap:anywhere}
.fill:empty{display:inline-block;width:100%;min-width:4em;height:1.25em;border-bottom:1px solid var(--rule);vertical-align:bottom}
.sub .fill:empty{width:calc(100% - 3.4em)}
.fill--org:empty{height:1.2em;width:85%}
.fill-list{margin:0;padding-left:1.1rem}
.fill-list li{margin:.1rem 0}
.fill-list:empty{padding:0;height:5.1em;background:repeating-linear-gradient(to bottom,transparent 0,transparent calc(1.7em - 1px),var(--rule) calc(1.7em - 1px),var(--rule) 1.7em)}
.sheet-foot{margin-top:1.1rem;padding-top:.7rem;border-top:1px solid var(--rule);display:grid;grid-template-columns:1fr 1fr;gap:.4rem 1.5rem;font-size:.78em;color:var(--soft)}
.sheet-foot p{margin:0}
@media (max-width:560px){
  .sheet{font-size:12.5px}
  .sheet-head,.sheet-grid,.sheet-foot{grid-template-columns:minmax(0,1fr)}
  .sheet-start ol{grid-template-columns:minmax(0,1fr)}
  .sheet-dl > div{grid-template-columns:minmax(0,1fr);gap:.1rem}
  .sheet thead th:first-child{width:28%}
  .sheet thead th:last-child{width:36%}
}

/* ---------- Self-assessment ---------- */
@media (min-width:901px){.sa-split{grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr)}}
.sa-side p{color:var(--body)}
.sa-progress{margin:1.6rem 0 1.4rem}
.sa-bar{height:6px;border-radius:999px;background:var(--paper-2);overflow:hidden;border:1px solid var(--line)}
.sa-bar span{display:block;height:100%;width:0;background:var(--sun);border-radius:inherit;transition:width .5s var(--ease)}
.sa-progress .mono{margin:.6rem 0 0;color:var(--muted);font-size:.74rem;letter-spacing:.1em;text-transform:uppercase}
.sa-side .btns .btn{height:48px;padding:0 1.3rem;font-size:.94rem}
.sa-group{margin-bottom:clamp(2.5rem,2rem + 2vw,3.8rem)}
.sa-group:last-child{margin-bottom:0}
.sa-group-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.4rem 1.5rem;padding-bottom:.9rem;border-bottom:1px solid var(--text)}
.sa-group-head h2{font-family:var(--f-display);font-weight:360;font-size:clamp(1.5rem,1.3rem + .8vw,2rem);letter-spacing:-.015em;line-height:1.1}
.sa-guide{font-size:.86rem;color:var(--muted);text-decoration-color:var(--sun)}
.sa-guide:hover{color:var(--text)}
.sa-q{border:0;margin:0;padding:1.25rem 0 1.3rem;border-bottom:1px solid var(--line);min-width:0}
.sa-q legend{float:left;width:100%;padding:0;margin:0 0 .9rem;display:grid;grid-template-columns:2.4rem minmax(0,1fr);gap:.2rem}
.sa-n{font-family:var(--f-mono);font-size:.74rem;color:var(--sun-ink);padding-top:.28rem}
.sa-text{font-size:1.03rem;line-height:1.5;color:var(--text)}
.sa-opts{clear:both;display:flex;flex-wrap:wrap;gap:.5rem;padding-left:2.6rem}
.sa-opt{position:relative;display:inline-flex}
.sa-opt input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.sa-opt span{display:inline-flex;align-items:center;gap:.45rem;height:40px;padding:0 1.05rem;border:1px solid var(--line-2);border-radius:999px;font-size:.92rem;font-weight:500;color:var(--body);background:var(--white);transition:background .2s,border-color .2s,color .2s}
.sa-opt span::before{content:"";width:.6rem;height:.6rem;border-radius:50%;border:1.5px solid currentColor;opacity:.55;transition:background .2s,opacity .2s}
.sa-opt:hover span{border-color:var(--text)}
.sa-opt input:focus-visible + span{outline:2px solid var(--sun);outline-offset:3px}
.sa-opt input:checked + span::before{opacity:1;background:currentColor}
.sa-opt--yes input:checked + span{background:#e4efe8;border-color:var(--ok);color:#1d5a39}
.sa-opt--no input:checked + span{background:#fbe9e7;border-color:var(--err);color:#8f1c13}
.sa-opt--unsure input:checked + span{background:#fbefd9;border-color:var(--sun-ink);color:#6b3f00}
@media (max-width:560px){.sa-opts{padding-left:0}.sa-q legend{grid-template-columns:2rem minmax(0,1fr)}}

.sa-res-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1.5rem 3rem;margin-bottom:clamp(2rem,1.5rem + 2vw,3.5rem)}
.sa-res-head .h2{margin-bottom:1rem}
.sa-summary{margin:0;max-width:40rem;color:var(--on-night-2);font-size:1.08rem}
.sa-dated{display:none}
.sa-bands{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}
.sa-band{background:var(--night-2);border:1px solid var(--line-night);border-radius:20px;padding:1.6rem 1.5rem 1.4rem}
.sa-band h3{display:flex;align-items:center;gap:.6rem;font-family:var(--f-display);font-weight:380;font-size:1.55rem;letter-spacing:-.01em;margin-bottom:.4rem}
.sa-dot{width:.7rem;height:.7rem;border-radius:50%;flex:none}
.sa-band--start .sa-dot{background:var(--ember)}
.sa-band--next .sa-dot{background:var(--sun)}
.sa-band--good .sa-dot{background:var(--leaf)}
.sa-band-note{margin:0 0 1rem;font-size:.88rem;color:var(--on-night-2)}
.sa-band ol,.sa-band ul{list-style:none;margin:0;padding:0;counter-reset:todo}
.sa-band li{counter-increment:todo;position:relative;padding:.85rem 0 .85rem 2rem;border-top:1px solid var(--line-night);font-size:.95rem;line-height:1.5;color:var(--on-night)}
.sa-band ol li::before{content:counter(todo,decimal-leading-zero);position:absolute;left:0;top:.95rem;font-family:var(--f-mono);font-size:.72rem;color:var(--sun)}
.sa-band ul li::before{content:"";position:absolute;left:.15rem;top:1.25rem;width:.75rem;height:.4rem;border-left:2px solid var(--leaf);border-bottom:2px solid var(--leaf);transform:rotate(-45deg)}
.sa-band--good li{color:var(--on-night-2)}
.sa-band a{color:var(--sun-2)}
.sa-do{display:block}
.sa-link{display:inline-block;margin-top:.3rem;font-size:.82rem;color:var(--on-night-3)!important;text-decoration-color:var(--line-night-2)}
.sa-link:hover{color:var(--on-night)!important}
.sa-flag{display:inline-block;margin:0 0 .3rem;padding:.1rem .5rem;border-radius:999px;border:1px solid var(--sun);font:500 .62rem/1.5 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--sun)}
.sa-band.is-empty ol::after,.sa-band.is-empty ul::after{display:block;padding:.85rem 0 0;border-top:1px solid var(--line-night);font-size:.9rem;color:var(--on-night-2)}
.sa-band--start.is-empty ol::after{content:"Nothing here yet."}
.sa-band--next.is-empty ol::after{content:"Nothing here yet."}
.sa-band--good.is-empty ul::after{content:"Nothing here yet."}
.sa-bands.is-blank .sa-band{background:transparent;border-style:dashed;border-color:var(--line-night-2)}
.sa-bands.is-blank .sa-dot{opacity:.45}
.sa-fine{margin:2rem 0 0;font-size:.86rem;color:var(--on-night-3);max-width:44rem}
@media (max-width:980px){.sa-bands{grid-template-columns:minmax(0,1fr)}}

/* ---------- Templates ---------- */
.tpl-side p{color:var(--body);font-size:.96rem}
.tpl-licence{margin:1.8rem 0;padding:1.3rem 1.4rem;border-radius:16px;background:var(--paper-3);border:1px solid var(--line)}
.tpl-licence .mono{margin:0 0 .5rem;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--sun-ink)}
.tpl-licence p:last-child{margin:0}
.tpl-licence a{text-decoration-color:var(--sun)}
.tpl{display:grid;grid-template-columns:minmax(0,1fr) 13rem;gap:1.5rem 2.2rem;padding:2.4rem 0;border-top:1px solid var(--line)}
.tpl:first-child{border-top:0;padding-top:0}
.tpl-main{min-width:0}
.tpl-n{color:var(--sun-ink);letter-spacing:.12em;text-transform:uppercase;font-size:.72rem;margin-bottom:.7rem}
.tpl h2{font-family:var(--f-display);font-weight:360;font-size:clamp(1.55rem,1.3rem + 1vw,2.15rem);line-height:1.1;letter-spacing:-.015em;margin-bottom:.8rem}
.tpl-for{font-family:var(--f-display);font-size:1.18rem;line-height:1.45;color:var(--body)}
.tpl h3{font:600 .74rem/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:1.4rem 0 .6rem}
.tpl-main > p{color:var(--body)}
.tpl-files{display:flex;flex-direction:column;gap:.5rem;align-self:start}
.tpl-files .mono{margin:0 0 .2rem;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.tpl-dl{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;border-radius:12px;border:1px solid var(--line-2);background:var(--white);text-decoration:none;font-weight:600;font-size:.92rem;transition:border-color .2s,background .2s,transform .2s var(--ease)}
.tpl-dl .mono{color:var(--sun-ink);font-weight:500}
.tpl-dl:hover{border-color:var(--text);transform:translateY(-1px)}
.tpl-preview{margin-top:1.2rem;border-top:1px solid var(--line)}
.tpl-preview summary{cursor:pointer;padding:.9rem 0;font-weight:600;font-size:.92rem;list-style:none;display:flex;align-items:center;gap:.6rem}
.tpl-preview summary::-webkit-details-marker{display:none}
.tpl-preview summary::before{content:"";width:.45rem;height:.45rem;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .25s var(--ease)}
.tpl-preview[open] summary::before{transform:rotate(45deg)}
.tpl-preview pre{margin:0;max-height:26rem;overflow:auto;padding:1.2rem 1.3rem;border-radius:14px;background:var(--paper-3);border:1px solid var(--line);font:.76rem/1.55 var(--f-mono);color:var(--body);white-space:pre}
@media (max-width:760px){.tpl{grid-template-columns:minmax(0,1fr)}}

/* ---------- Print: each tool prints only its result ---------- */
@media print{
  .tool-privacy,.ip-form,.ip-bar,.ip-tip,.tool-more,.no-js-only{display:none!important}
  .ip-layout{display:block;max-width:none}
  .ip-preview{position:static}
  .sheet-frame{max-height:none;overflow:visible;padding:0;border:0;border-radius:0;background:none!important}
  body:has(.sheet) .page-hero,body:has(.sheet)::before{display:none!important}
  body:has(.sheet) .tool-section{padding:0!important}
  .sheet{box-shadow:none;padding:0;font-size:8.6pt;border-top:4pt solid #000!important;padding-top:10pt}
  .sheet *{color:#000!important}
  .sheet .sheet-start{background:#f3f3f3!important;border-color:#000!important}
  .sheet-start ol{grid-template-columns:repeat(3,minmax(0,1fr))}
  .sheet-head,.sheet-grid,.sheet-foot{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .sheet-dl > div{grid-template-columns:7.2rem minmax(0,1fr)}
  .sheet-box,.sheet-start{break-inside:avoid}
  .sheet-kicker::before{background:#000!important}
  .fill:empty{border-color:#666!important;height:2.1em}
  .fill--org:empty{height:1.6em}
  .fill-list:empty{height:8.4em;background:repeating-linear-gradient(to bottom,transparent 0,transparent calc(2.1em - 1px),#666 calc(2.1em - 1px),#666 2.1em)!important}
  .sheet-start li::before{color:#000!important}
  .sheet-dl{gap:.25rem}
  .sheet-people .num .fill:empty{width:10em}

  body:has(.sa-form) .page-hero,body:has(.sa-form) .tool-section{display:none!important}
  .sa-results{padding:0!important}
  .sa-res-head .btns{display:none!important}
  .sa-link{color:#333!important;font-size:8.5pt;text-decoration:none}
  .sa-link::after{content:" (moraph.org" attr(href) ")"}
  .sa-band ol li::before{color:#000!important}
  .sa-bands{grid-template-columns:minmax(0,1fr)!important;gap:14pt;opacity:1!important}
  .sa-band{background:none!important;border:0;border-radius:0;padding:0}
  .sa-band.is-empty{display:none}
  .sa-band li{border-color:#bbb!important;break-inside:avoid;padding:5pt 0 5pt 22pt}
  .sa-band ol li::before{top:6pt}
  .sa-band ul li::before{border-color:#000!important}
  .sa-dated{display:block;margin:.6rem 0 0;font-size:9pt}
  .sa-flag{border-color:#000!important}
  .tpl-files,.tpl-preview{display:none!important}
  .tpl{grid-template-columns:minmax(0,1fr)!important;break-inside:avoid;padding:12pt 0}
}
