
/* Standalone, user-entered Portfolio Risk Map */
.risk-hero { padding: 58px 0 44px; border-bottom:1px solid var(--line); }
.risk-hero h1 { font:700 clamp(48px,7vw,85px)/.97 var(--font-serif); letter-spacing:-.045em; max-width:890px; margin:9px 0 21px; }
.risk-hero .dek { max-width:760px; margin:0 0 13px; font:400 clamp(21px,2.5vw,30px)/1.3 var(--font-serif); color:var(--ink); }
.risk-hero .page-hero-note { max-width:78ch; color:var(--muted); font-size:14px; line-height:1.65; margin:15px 0 0; }
.risk-workshop { padding-top:37px; }
.risk-workspace[hidden],.risk-loading[hidden],.risk-empty[hidden],.risk-custom-container[hidden] { display:none!important; }
.risk-card { border:1px solid var(--line); background:var(--paper); padding:25px; min-width:0; }
.risk-card h2 { font:700 clamp(26px,3vw,36px)/1.12 var(--font-serif); letter-spacing:-.02em; margin:4px 0 13px; }
.risk-card h3 { font:700 23px/1.2 var(--font-serif); margin:0 0 13px; }
.risk-card p { font-size:14px; color:var(--muted); line-height:1.6; }
.risk-card .kicker { color:var(--accent); }
.risk-layout { display:grid; grid-template-columns:minmax(0,1.18fr) minmax(0,.82fr); gap:16px; align-items:start; }
.risk-stack { display:grid; gap:16px; }
.risk-entry-form { display:grid; grid-template-columns:minmax(94px,.65fr) minmax(120px,1fr) minmax(160px,1.5fr) auto; gap:10px; align-items:end; }
.risk-entry-form label,.risk-position-row label,.risk-target-controls label { display:grid; gap:5px; min-width:0; color:var(--muted); font-size:11px; text-transform:uppercase; letter-spacing:.06em; font-weight:700; }
.risk-entry-form input,.risk-entry-form select,.risk-position-row input,.risk-position-row select,.risk-target-controls select,.risk-custom-targets input,.risk-bulk textarea { width:100%; min-width:0; border:1px solid var(--line); background:#fffdfa; color:var(--ink); border-radius:0; font:500 14px var(--font-sans); padding:11px 9px; }
.risk-entry-form select,.risk-position-row select { cursor:pointer; }
.risk-entry-form button,.risk-actions button,.risk-corr-controls button,.risk-bulk button { border:1px solid var(--ink); background:var(--ink); color:var(--paper); padding:11px 14px; cursor:pointer; font:700 12px var(--font-sans); min-height:43px; }
.risk-actions button,.risk-bulk button { background:transparent; color:var(--ink); border-color:var(--line); }
.risk-actions button:hover,.risk-bulk button:hover,.risk-entry-form button:hover,.risk-corr-controls button:hover { border-color:var(--accent); color:var(--accent); background:var(--paper); }
.risk-corr-controls button:disabled { cursor:wait; opacity:.6; }
.risk-entry-message { display:block; color:var(--accent); font-size:12px; min-height:19px; margin-top:8px; }
.risk-actions { display:flex; flex-wrap:wrap; gap:8px; margin:14px 0 0; }
.risk-bulk details { margin-top:17px; }
.risk-bulk summary { cursor:pointer; font-weight:700; font-size:13px; }
.risk-bulk textarea { margin-top:10px; min-height:85px; resize:vertical; }
.risk-bulk button { margin-top:8px; }
.risk-privacy { border-top:1px solid var(--line); margin-top:19px!important; padding-top:13px; font-size:12px!important; }
.risk-input-head { display:flex; justify-content:space-between; gap:12px; align-items:baseline; flex-wrap:wrap; margin-bottom:14px; }
.risk-input-head strong { font:700 31px/1 var(--font-serif); }
.risk-input-head span { font-size:12px; color:var(--muted); }
.risk-positions { display:grid; gap:0; }
.risk-position-row { display:grid; grid-template-columns:minmax(90px,1.1fr) minmax(90px,.8fr) minmax(145px,1.5fr) auto; gap:10px; align-items:center; padding:11px 0; border-bottom:1px solid var(--line); }
.risk-symbol strong { display:block; font-size:16px; }
.risk-symbol span { font-size:11px; color:var(--muted); }
.risk-position-row input,.risk-position-row select { padding:8px; font-size:13px; }
.risk-remove { border:0; background:none; cursor:pointer; color:var(--accent); font-size:12px; text-decoration:underline; padding:8px 2px; }
.risk-target-controls { display:flex; align-items:end; flex-wrap:wrap; gap:13px; margin-bottom:13px; }
.risk-target-controls label { min-width:200px; flex:1; }
.risk-target-total { color:var(--muted); font-size:12px; line-height:1.5; }
.risk-custom-targets { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px 14px; margin:15px 0 6px; }
.risk-custom-targets label { display:grid; grid-template-columns:minmax(0,1fr) 75px; gap:8px; align-items:center; font-size:12px; }
.risk-custom-targets input { padding:8px; text-align:right; }
.risk-warning { color:var(--accent)!important; font-weight:650; }
.risk-gap-note { font-size:12px!important; color:var(--muted); margin:14px 0 0!important; }
.risk-results { margin-top:18px; }
.risk-metric-row { display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; align-items:baseline; margin-bottom:20px; }
.risk-metric-row h2 { margin:0; }
.risk-metric-row span { color:var(--muted); font-size:12px; }
.risk-results-layout { display:grid; grid-template-columns:minmax(225px,.66fr) minmax(0,1.34fr); gap:16px; align-items:start; }
.risk-donut-card { text-align:center; }
.risk-donut { display:grid; place-items:center; width:min(100%,245px); aspect-ratio:1; margin:11px auto 20px; border-radius:50%; background:var(--line); position:relative; }
.risk-donut::before { content:""; background:var(--paper); position:absolute; inset:25%; border-radius:50%; }
.risk-donut-center { position:relative; z-index:1; display:flex; align-items:center; justify-content:center; flex-direction:column; text-align:center; }
.risk-donut-center strong { font:700 35px/1 var(--font-serif); }
.risk-donut-center small { font-size:11px; color:var(--muted); margin-top:4px; }
.risk-chart-legend { display:flex; flex-wrap:wrap; gap:11px; color:var(--muted); font-size:12px; }
.risk-chart-legend span { display:flex; align-items:center; gap:6px; }
.risk-swatch { display:inline-block; width:16px; height:7px; }
.risk-sector-list { display:grid; gap:0; }
.risk-sector-row { display:grid; grid-template-columns:minmax(145px,1fr) minmax(110px,1.2fr) 70px; align-items:center; gap:11px; padding:10px 0; border-bottom:1px solid var(--line); }
.risk-sector-label { display:grid; grid-template-columns:10px minmax(0,1fr); gap:0 8px; align-items:center; min-width:0; }
.risk-sector-label strong { font-size:12px; line-height:1.4; font-weight:750; }
.risk-sector-label small { font-size:11px; color:var(--muted); grid-column:2; }
.risk-sector-dot { display:block; width:8px; height:8px; border-radius:50%; }
.risk-sector-compare { display:grid; gap:7px; }
.risk-track { background:rgba(0,0,0,.065); height:8px; width:100%; }
.risk-track span { display:block; height:100%; }
.risk-track.target { height:4px; background:rgba(0,0,0,.035); }
.risk-track.target span { background:var(--ink); opacity:.65; }
.risk-gap { text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; font-size:12px; color:var(--muted); }
.risk-gap.missing { color:var(--accent); font-weight:750; }
.risk-holes { display:grid; gap:0; }
.risk-hole { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:4px 15px; align-items:start; padding:15px 0; border-bottom:1px solid var(--line); }
.risk-hole>div strong { display:block; font-size:15px; }
.risk-hole>div span { font-size:12px; color:var(--muted); }
.risk-hole>strong { text-align:right; font-size:17px; color:var(--accent); font-variant-numeric:tabular-nums; }
.risk-hole>strong small { display:block; font-weight:500; font-size:11px; color:var(--muted); }
.risk-hole p { grid-column:1/-1; margin:3px 0!important; font-size:12px; }
.risk-hole p a { color:var(--ink); text-decoration:underline; }
.risk-placeholder { color:var(--muted); font-size:14px; line-height:1.6; }
.risk-corr-controls { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin:12px 0 16px; }
.risk-corr-controls span { color:var(--muted); font-size:12px; }
.risk-corr-scroller { width:100%; max-width:100%; overflow-x:auto; }
.risk-corr-scroller table { border-collapse:separate; border-spacing:3px; font-variant-numeric:tabular-nums; font-size:12px; }
.risk-corr-scroller th { padding:9px; min-width:55px; color:var(--muted); font-size:11px; }
.risk-corr-scroller td { min-width:55px; text-align:center; padding:13px 8px; color:var(--ink); font-weight:800; background:#e8e4dc; }
.risk-corr-scroller td.risk-corr-high { background:#9fb8a7; }
.risk-corr-scroller td.risk-corr-mid { background:#c7d5c7; }
.risk-corr-scroller td.risk-corr-low { background:#e4e5df; }
.risk-corr-scroller td.risk-corr-inverse { background:#d5bdc0; }
.risk-corr-scroller td.risk-corr-self { background:var(--line); color:var(--muted); }
.risk-corr-scroller td.risk-corr-na { color:var(--muted); font-weight:400; }
.risk-corr-pairs { display:flex; flex-wrap:wrap; align-items:center; gap:9px; margin:15px 0 0; font-size:12px; }
.risk-corr-pairs>strong { margin-right:9px; }
.risk-corr-pairs span { padding:6px 9px; border:1px solid var(--line); }
.risk-corr-legend,.risk-method { margin:12px 0 0!important; font-size:12px!important; line-height:1.65; }
@media(max-width:950px){
  .risk-layout,.risk-results-layout { grid-template-columns:1fr; }
  .risk-chart-intro { margin-bottom:0; }
}
@media(max-width:640px){
  .risk-card { padding:18px; }
  .risk-entry-form { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  .risk-entry-form label:nth-child(3) { grid-column:1/-1; }
  .risk-entry-form button { grid-column:1/-1; }
  .risk-position-row { grid-template-columns:minmax(0,.7fr) minmax(0,1fr) auto; }
  .risk-position-row label:nth-of-type(2){ grid-column:1/-1; }
  .risk-position-row .risk-remove { grid-column:3; grid-row:1; }
  .risk-sector-row { grid-template-columns:minmax(110px,.9fr) minmax(70px,1fr) 63px; gap:6px; }
  .risk-sector-label strong { font-size:11px; }
  .risk-sector-label small,.risk-gap { font-size:10px; }
  .risk-custom-targets { grid-template-columns:1fr; }
}

.risk-symbol .risk-instrument-note{display:block;max-width:270px;color:var(--muted);font-size:11px;line-height:1.4;margin-top:3px}
.risk-symbol .risk-source{display:block;max-width:270px;color:var(--accent);font-size:11px;line-height:1.4;margin-top:4px;text-decoration:underline}
.risk-position-row{grid-template-columns:minmax(145px,1.25fr) minmax(90px,.8fr) minmax(145px,1.5fr) auto}
@media(max-width:640px){.risk-position-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}.risk-symbol{grid-column:1/-1}}

/* Named sector benchmarks */
.risk-preset-detail {margin:17px 0 18px;padding:16px 18px;border:1px solid var(--line);background:var(--bg)}
.risk-preset-detail>strong{display:block;font:700 19px/1.25 var(--font-serif);margin:0 0 8px}
.risk-preset-detail p{margin:8px 0;font-size:12px;line-height:1.65}
.risk-preset-detail p:last-child{margin-bottom:0}
.risk-preset-detail a{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.risk-preset-detail .risk-preset-caveat{color:var(--accent)}
.risk-preset-status{border-top:1px solid var(--line);padding-top:10px;margin-top:12px!important}
.risk-preset-status strong{font-weight:800}

/* Risk Map: prioritize portfolio input and results; details remain opt-in */
.risk-hero{padding:42px 0 32px}
.risk-hero h1{font-size:clamp(42px,6vw,72px);margin:5px 0 12px}
.risk-hero .dek{font:400 clamp(18px,2vw,24px)/1.35 var(--font-serif);margin:0}
.risk-workshop{padding-top:26px}
.risk-card{padding:20px}
.risk-card h2{font-size:clamp(24px,2.8vw,32px);margin:4px 0 17px}
.risk-card h3{font-size:19px;margin:0 0 10px}
.risk-layout,.risk-stack{gap:12px}
.risk-entry-form{grid-template-columns:minmax(110px,.95fr) minmax(140px,1.25fr) auto}
.risk-entry-message:empty{display:none}
.risk-actions{margin-top:9px}
.risk-actions button{font-size:11px;min-height:33px;padding:6px 10px}
.risk-bulk details{margin-top:13px}
.risk-bulk summary{font-size:12px;color:var(--ink)}
.risk-bulk textarea{margin-top:8px}
.risk-privacy{border:0;padding:0;margin:13px 0 0!important;font-size:11px!important}
.risk-input-head{margin-bottom:7px}
.risk-position-row{grid-template-columns:minmax(110px,1.05fr) minmax(93px,.8fr) minmax(140px,1.5fr) 25px;gap:9px;padding:10px 0}
.risk-position-row label>span{font-size:10px}
.risk-position-row input,.risk-position-row select{font-size:12px;padding:8px}
.risk-symbol span{font-size:10px}
.risk-position-status{display:block;font-size:10px;color:var(--accent);line-height:1.3}
.risk-remove{font-size:20px;text-decoration:none;line-height:1;min-width:22px;min-height:35px;color:var(--muted)}
.risk-remove:hover{color:var(--accent)}
.risk-target-controls{margin:0 0 10px}
.risk-target-controls label{min-width:190px}
.risk-preset-detail{margin:0;padding:0;border:0;background:none}
.risk-preset-detail>p{font-size:12px;line-height:1.5;margin:0 0 5px}
.risk-preset-status{display:block;padding:0;border:0;margin:2px 0 0!important;font-size:11px;color:var(--muted)}
.risk-inline-details{margin-top:10px}
.risk-inline-details>summary{font-size:11px;font-weight:700;color:var(--muted);cursor:pointer}
.risk-inline-details>p{font-size:12px;line-height:1.55;margin:8px 0 0}
.risk-results{margin-top:22px}
.risk-metric-row{margin-bottom:13px}
.risk-metric-row h2{font-size:clamp(28px,3vw,36px)}
.risk-donut{width:min(100%,224px);margin:5px auto 7px}
.risk-sector-row{padding:8px 0}
.risk-chart-legend{margin-bottom:8px;gap:15px}
.risk-hole{padding:11px 0}
.risk-hole p{margin:2px 0!important;font-size:12px}
.risk-hole p a{text-decoration:underline}
.risk-gap-note:empty,.risk-corr-controls~p:empty{display:none}
.risk-correlation-accordion>summary,.risk-audit>summary{list-style:none;display:flex;align-items:baseline;justify-content:space-between;gap:12px;cursor:pointer;font:700 20px/1.3 var(--font-serif)}
.risk-correlation-accordion>summary::-webkit-details-marker,.risk-audit>summary::-webkit-details-marker{display:none}
.risk-correlation-accordion>summary::after,.risk-audit>summary::after{content:"+";font:400 24px/1 var(--font-sans);color:var(--muted);margin-left:auto}
.risk-correlation-accordion[open]>summary::after,.risk-audit[open]>summary::after{content:"−"}
.risk-correlation-accordion>summary span{font:500 12px/1.4 var(--font-sans);color:var(--muted);margin-left:auto}
.risk-correlation-body,.risk-audit-body{border-top:1px solid var(--line);margin-top:16px;padding-top:15px}
.risk-audit>summary{font:700 14px/1.3 var(--font-sans)}
.risk-audit-body p{margin:0 0 10px;font-size:12px;line-height:1.55}
.risk-audit-head{font-weight:750;font-size:12px;margin:17px 0 5px}
.risk-audit-rows>div{display:grid;grid-template-columns:78px 1fr;gap:12px;padding:7px 0;border-bottom:1px solid var(--line);font-size:12px}
.risk-audit-rows>div strong{font-weight:750}
.risk-audit-rows>div span{color:var(--muted);overflow-wrap:anywhere}
.risk-corr-controls{margin:0 0 12px}
@media(max-width:640px){
  .risk-card{padding:16px}
  .risk-hero{padding:32px 0 28px}
  .risk-entry-form{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .risk-entry-form button{grid-column:1/-1}
  .risk-position-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 25px}
  .risk-position-row .risk-symbol{grid-column:1/-1}
  .risk-position-row label:nth-of-type(2){grid-column:2;grid-row:2}
  .risk-position-row .risk-remove{grid-column:3;grid-row:2}
  .risk-correlation-accordion>summary{flex-wrap:wrap}
}

/* Five opt-in demonstration portfolios; hidden until "Use sample" */
.risk-sample-menu[hidden]{display:none!important}
.risk-sample-menu{margin-top:12px;padding:12px;border:1px solid var(--line);background:var(--paper)}
.risk-sample-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.risk-sample-choice{display:grid;gap:3px;min-width:0;padding:11px 12px;border:1px solid var(--line);background:transparent;color:var(--ink);text-align:left;cursor:pointer;font-family:var(--font-sans)}
.risk-sample-choice:hover,.risk-sample-choice:focus-visible{border-color:var(--accent);background:var(--bg)}
.risk-sample-choice strong{font-size:13px;font-weight:750}
.risk-sample-choice small{font-size:11px;line-height:1.35;color:var(--muted)}
.risk-sample-choice span{font-size:10px;line-height:1.5;overflow-wrap:anywhere;color:var(--muted)}
.risk-sample-menu>p{font-size:11px;line-height:1.45;color:var(--muted);margin:10px 1px 0}
.risk-sample-status{display:block;margin-top:8px;font-size:11px;color:var(--muted)}
.risk-sample-status:empty{display:none}
@media(max-width:520px){.risk-sample-options{grid-template-columns:1fr}}

/* Sector definitions are available on demand without crowding the allocation chart. */
.risk-sector-guide{margin-top:14px;padding:0 2px}
.risk-sector-guide>summary{cursor:pointer;font:650 12px/1.5 var(--font-sans);color:var(--ink);list-style-position:inside}
.risk-sector-guide[open]>summary{margin-bottom:11px}
.risk-sector-guide-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;padding:5px 0 10px}
.risk-sector-guide-entry{padding:10px 0;border-top:1px solid var(--line)}
.risk-sector-guide-entry strong{font-size:12px;line-height:1.4;display:block}
.risk-sector-guide-entry p{font-size:12px;line-height:1.5;color:var(--muted);margin:3px 0 0}
@media(max-width:640px){.risk-sector-guide-list{grid-template-columns:1fr}}
