/* Portfolio page — redesign 2026-09. Port of docs/redesign-mockups/portfolio-mockup.html; builds on today.css tokens and classes. */
body[data-theme=gemini] #view .pf-page .today-stance h1.pf-value{font-size:clamp(30px,4.4vw,52px)}
body[data-theme=gemini] #view .pf-page .pf-duo{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--today-rule);border-bottom:1px solid var(--today-rule);margin:12px 0}
body[data-theme=gemini] #view .pf-page .pf-duo span{display:flex;flex-direction:column;gap:3px;padding:8px 0;font-size:10px}
body[data-theme=gemini] #view .pf-page .pf-duo span+span{border-inline-start:1px solid var(--today-rule);padding-inline-start:12px}
body[data-theme=gemini] #view .pf-page .pf-duo small{font-size:9px;letter-spacing:.08em;color:var(--ink3)}
body[data-theme=gemini] #view .pf-page .pf-duo b{font-size:15px;font-weight:500;letter-spacing:-.02em}
body[data-theme=gemini] #view .pf-page .pf-hero-sub{font-size:11px;line-height:1.55;color:var(--ink2);max-width:46ch;margin:0}
body[data-theme=gemini] #view .pf-page .pf-hero-sub b{color:var(--ink1);font-weight:500}
body[data-theme=gemini] #view .pf-page .pf-hist{display:block;width:100%;height:auto;margin-top:10px;overflow:visible}
body[data-theme=gemini] #view .pf-page .pf-hist .ln{fill:none;stroke-width:1.6}
body[data-theme=gemini] #view .pf-page .pf-hist .ar{opacity:.08}
body[data-theme=gemini] #view .pf-page .pf-hist .cost{stroke:var(--ink2);stroke-width:1;stroke-dasharray:3 3}
body[data-theme=gemini] #view .pf-page .pf-hist .grid{stroke:var(--today-rule);stroke-width:1}
body[data-theme=gemini] #view .pf-page .pf-hist .cross{stroke:var(--ink3);stroke-width:1}
body[data-theme=gemini] #view .pf-page .pf-hist text{font-family:inherit;font-size:9px;fill:var(--ink3)}

body[data-theme=gemini] #view .pf-page .pf-chips{display:flex;flex-wrap:wrap;gap:0;border:1px solid var(--today-rule)}
body[data-theme=gemini] #view .pf-page .pf-chips button{all:unset;cursor:pointer;padding:5px 10px;font-size:10px;color:var(--ink2);border-inline-end:1px solid var(--today-rule);transition:background-color 120ms ease}
body[data-theme=gemini] #view .pf-page .pf-chips button:last-child{border-inline-end:0}
body[data-theme=gemini] #view .pf-page .pf-chips button:hover{background:var(--today-hover)}
body[data-theme=gemini] #view .pf-page .pf-chips button[aria-pressed=true]{background:var(--ink1);color:var(--paper)}
body[data-theme=gemini] #view .pf-page .pf-chips button:focus-visible{outline:2px solid var(--today-focus);outline-offset:-2px}

body[data-theme=gemini] #view .pf-page .pf-tree{position:relative;aspect-ratio:1080/300;border:1px solid var(--today-rule);margin-top:14px;background:var(--paper)}
body[data-theme=gemini] #view .pf-page .pf-tree-in{position:absolute;inset:0}
body[data-theme=gemini] #view .pf-page .pf-tree button{all:unset;box-sizing:border-box;position:absolute;cursor:pointer;border:1px solid var(--paper);padding:10px 12px;display:flex;flex-direction:column;justify-content:space-between;gap:4px;overflow:hidden;container-type:size;color:var(--ink1);transition:box-shadow 120ms ease,filter 120ms ease}
body[data-theme=gemini] #view .pf-page .pf-tree button b{display:block;max-width:100%;font-size:12px;font-weight:700;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body[data-theme=gemini] #view .pf-page .pf-tree .pf-tw{display:flex;flex-direction:column;gap:3px;min-width:0}
body[data-theme=gemini] #view .pf-page .pf-tree .pf-tw em{font-style:normal;font-weight:500;line-height:1;letter-spacing:-.03em;font-size:22px;font-size:clamp(16px,24cqmin,46px);font-variant-numeric:tabular-nums}
body[data-theme=gemini] #view .pf-page .pf-tree .pf-tw span{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
body[data-theme=gemini] #view .pf-page .pf-tree button:hover{box-shadow:inset 0 0 0 2px var(--ink1);filter:saturate(1.25)}
body[data-theme=gemini] #view .pf-page .pf-tree button:focus-visible{box-shadow:inset 0 0 0 2px var(--today-focus)}
body[data-theme=gemini] #view .pf-page .pf-tree button.dbl{box-shadow:inset 0 0 0 2px var(--dn)}
body[data-theme=gemini] #view .pf-page .pf-tree button.dbl:hover{box-shadow:inset 0 0 0 2px var(--dn),inset 0 0 0 4px var(--ink1)}
body[data-theme=gemini] #view .pf-page .pf-tree button.small{padding:6px 8px}
body[data-theme=gemini] #view .pf-page .pf-tree button.small .pf-tw em{font-size:14px}
body[data-theme=gemini] #view .pf-page .pf-tree button.small .pf-tw span{display:none}
body[data-theme=gemini] #view .pf-page .pf-tree button.tiny{padding:4px 6px}
body[data-theme=gemini] #view .pf-page .pf-tree button.tiny b{font-size:10px}
body[data-theme=gemini] #view .pf-page .pf-tree button.tiny .pf-tw{display:none}

body[data-theme=gemini] #view .pf-page .pf-fall{border:1px solid var(--today-rule);margin-top:12px;overflow-x:auto}
body[data-theme=gemini] #view .pf-page .pf-fall svg{display:block;width:100%;min-width:560px;height:auto}
body[data-theme=gemini] #view .pf-page .pf-fall text{font-family:inherit;font-size:9px;fill:var(--ink3)}
body[data-theme=gemini] #view .pf-page .pf-fall .lbl{fill:var(--ink1);font-size:10px;font-weight:600}
body[data-theme=gemini] #view .pf-page .pf-fall .con{stroke:var(--ink3);stroke-width:1;stroke-dasharray:2 2}
body[data-theme=gemini] #view .pf-page .pf-fall g[data-go]{cursor:pointer}
body[data-theme=gemini] #view .pf-page .pf-fall g[data-go]:hover rect{opacity:1}

body[data-theme=gemini] #view .pf-page .pf-add{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,1.2fr) auto;gap:12px 14px;align-items:end;padding:16px 18px}
body[data-theme=gemini] #view .pf-page .pf-add label{display:flex;flex-direction:column;gap:6px;min-width:0}
body[data-theme=gemini] #view .pf-page .pf-add small{font-size:9px;letter-spacing:.12em;color:var(--ink3)}
body[data-theme=gemini] #view .pf-page .pf-add input{all:unset;box-sizing:border-box;width:100%;min-width:0;font-size:13px;padding:10px 12px;color:var(--ink1);border:1px solid var(--today-rule);background:var(--paper)}
body[data-theme=gemini] #view .pf-page .pf-add input:hover{border-color:var(--ink3)}
body[data-theme=gemini] #view .pf-page .pf-add input:focus{border-color:var(--ink1);box-shadow:inset 0 -2px 0 var(--ink1)}
body[data-theme=gemini] #view .pf-page .pf-add input::placeholder{color:var(--ink3)}
body[data-theme=gemini] #view .pf-page .pf-add #ph-tkr:not(:placeholder-shown){text-transform:uppercase}
body[data-theme=gemini] #view .pf-page .pf-add .pf-rs{display:flex;align-items:stretch}
body[data-theme=gemini] #view .pf-page .pf-add .pf-rs i{font-style:normal;font-size:11px;color:var(--ink3);display:flex;align-items:center;padding:0 10px;border:1px solid var(--today-rule);border-inline-end:0}
body[data-theme=gemini] #view .pf-page .pf-add button{all:unset;box-sizing:border-box;cursor:pointer;padding:10px 18px;font-size:12px;font-weight:600;letter-spacing:.04em;background:var(--ink1);color:var(--paper);border:1px solid var(--ink1);white-space:nowrap;text-align:center}
body[data-theme=gemini] #view .pf-page .pf-add button:hover{opacity:.85}
body[data-theme=gemini] #view .pf-page .pf-add button:focus-visible{outline:2px solid var(--today-focus);outline-offset:2px}
body[data-theme=gemini] #view .pf-page .pf-add #ph-msg{grid-column:1/-1;margin:0;font-size:10px;line-height:1.5}
body[data-theme=gemini] #view .pf-page .pf-hold{overflow-x:auto}
body[data-theme=gemini] #view .pf-page .pf-controls{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;justify-content:space-between;padding:10px 0 0}
body[data-theme=gemini] #view .pf-page .today-table th[data-sort]{cursor:pointer;user-select:none}
body[data-theme=gemini] #view .pf-page .today-table th[data-sort]:hover{color:var(--ink1)}
body[data-theme=gemini] #view .pf-page .today-table th[aria-sort]::after{content:" ↓"}
body[data-theme=gemini] #view .pf-page .pf-w{display:flex;align-items:center;gap:6px;min-width:84px}
body[data-theme=gemini] #view .pf-page .pf-w i{display:block;height:6px;background:var(--ink1);opacity:.75}
body[data-theme=gemini] #view .pf-page .pf-range{display:block;width:120px;height:18px;overflow:visible}
body[data-theme=gemini] #view .pf-page .pf-range .tr{stroke:var(--rline);stroke-width:2}
body[data-theme=gemini] #view .pf-page .pf-range .ck{stroke:var(--ink1);stroke-width:1.5}
body[data-theme=gemini] #view .pf-page .pf-range text{font-family:inherit;font-size:8px;fill:var(--ink3)}
body[data-theme=gemini] #view .pf-page .pf-del{all:unset;cursor:pointer;color:var(--ink3);padding:0 4px}
body[data-theme=gemini] #view .pf-page .pf-del:hover{color:var(--dn)}
body[data-theme=gemini] #view .pf-page tr.flash td{animation:pfflash 1.2s ease}
@keyframes pfflash{0%,40%{background:color-mix(in srgb,var(--today-focus) 16%,transparent)}100%{background:transparent}}
body[data-theme=gemini] #view .pf-page tfoot td{border-top:1px solid var(--rline);font-weight:600}

body[data-theme=gemini] #view .pf-page .pf-xr-intro{margin:16px 0 18px;max-width:70ch;line-height:1.6}
body[data-theme=gemini] #view .pf-page .xr-foot{margin:16px 0 0;max-width:70ch;line-height:1.6}
body[data-theme=gemini] #view .pf-page .pf-xstats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--today-rule);border:1px solid var(--today-rule)}
body[data-theme=gemini] #view .pf-page .pf-xstat{display:flex;flex-direction:column;gap:8px;min-width:0;padding:16px 18px 18px;background:var(--paper);transition:background-color 120ms ease}
body[data-theme=gemini] #view .pf-page .pf-xstat:hover{background:var(--today-hover)}
body[data-theme=gemini] #view .pf-page .pf-xl{font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink3)}
body[data-theme=gemini] #view .pf-page .pf-xv{font-size:26px;font-weight:500;line-height:1.05;letter-spacing:-.03em;color:var(--ink1)}
body[data-theme=gemini] #view .pf-page .pf-xv.up{color:var(--up)}
body[data-theme=gemini] #view .pf-page .pf-xv.dn{color:var(--dn)}
body[data-theme=gemini] #view .pf-page .pf-xn{font-size:9px;line-height:1.5;color:var(--ink3);margin-top:auto}
body[data-theme=gemini] #view .pf-page .pf-xviz{display:flex;flex-direction:column;gap:4px;padding-top:2px}
body[data-theme=gemini] #view .pf-page .pf-trk,body[data-theme=gemini] #view .pf-page .pf-lim-trk{position:relative;display:block;height:6px;background:color-mix(in srgb,var(--ink1) 8%,transparent)}
body[data-theme=gemini] #view .pf-page .pf-trk i,body[data-theme=gemini] #view .pf-page .pf-lim-trk i{position:absolute;top:0;bottom:0;left:0;background:var(--ink1)}
body[data-theme=gemini] #view .pf-page .pf-trk i.up{background:var(--up)}
body[data-theme=gemini] #view .pf-page .pf-trk i.dn{background:var(--dn)}
body[data-theme=gemini] #view .pf-page .pf-trk i.dot{width:10px;height:10px;top:-2px;margin-left:-5px;background:var(--ink1);box-shadow:0 0 0 2px var(--paper)}
body[data-theme=gemini] #view .pf-page .pf-trk s,body[data-theme=gemini] #view .pf-page .pf-lim-trk s{position:absolute;top:-4px;bottom:-4px;width:0;border-inline-start:1.5px solid var(--ink1)}
body[data-theme=gemini] #view .pf-page .pf-ax{position:relative;display:block;height:12px;font-size:8px;line-height:12px;color:var(--ink3);white-space:nowrap}
body[data-theme=gemini] #view .pf-page .pf-ax em{position:absolute;top:0;font-style:normal;transform:translateX(-50%)}
body[data-theme=gemini] #view .pf-page .pf-ax em.start{left:0;transform:none}
body[data-theme=gemini] #view .pf-page .pf-ax em.end{right:0;left:auto;transform:none}

body[data-theme=gemini] #view .pf-page .pf-rules{border-top:1px solid var(--today-rule);margin-top:22px}
body[data-theme=gemini] #view .pf-page .pf-rule{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(150px,1fr) minmax(110px,.55fr);grid-template-areas:"h viz v";gap:24px;align-items:center;padding:18px 10px;border-bottom:1px solid var(--today-rule);transition:background-color 120ms ease}
body[data-theme=gemini] #view .pf-page .pf-rule:hover{background:var(--today-hover)}
body[data-theme=gemini] #view .pf-page .pf-rule-h{grid-area:h;display:flex;gap:12px;align-items:flex-start;min-width:0}
body[data-theme=gemini] #view .pf-page .pf-rule .mk{flex:none;width:18px;height:18px;display:grid;place-items:center;font-size:10px;font-weight:700;border:1px solid currentColor;margin-top:1px}
body[data-theme=gemini] #view .pf-page .pf-rule.ok .mk{color:var(--up)}
body[data-theme=gemini] #view .pf-page .pf-rule.bad .mk{color:var(--dn)}
body[data-theme=gemini] #view .pf-page .pf-rule b{font-size:12px;font-weight:600;display:block;color:var(--ink1)}
body[data-theme=gemini] #view .pf-page .pf-rule p{margin:5px 0 0;color:var(--ink3);font-size:10px;line-height:1.55;max-width:60ch}
body[data-theme=gemini] #view .pf-page .pf-rule-viz{grid-area:viz;min-width:0}
body[data-theme=gemini] #view .pf-page .pf-rule .v{grid-area:v;text-align:end;font-size:11px;font-weight:600;color:var(--ink1)}
body[data-theme=gemini] #view .pf-page .pf-rule.bad .v{color:var(--dn)}
body[data-theme=gemini] #view .pf-page .pf-slots{display:flex;align-items:center;gap:4px}
body[data-theme=gemini] #view .pf-page .pf-slots i{flex:none;width:22px;height:14px;border:1px solid var(--ink3);background:transparent}
body[data-theme=gemini] #view .pf-page .pf-slots i.on{background:var(--ink1);border-color:var(--ink1)}
body[data-theme=gemini] #view .pf-page .pf-slots i.over{background:var(--dn);border-color:var(--dn)}
body[data-theme=gemini] #view .pf-page .pf-slots s{flex:none;width:0;height:22px;border-inline-start:1.5px solid var(--ink1);margin:0 3px}
body[data-theme=gemini] #view .pf-page .pf-lim{display:flex;flex-direction:column;gap:5px}
body[data-theme=gemini] #view .pf-page .pf-lim-trk{height:8px}
body[data-theme=gemini] #view .pf-page .pf-lim-trk i.over{background:var(--dn)}
body[data-theme=gemini] #view .pf-page .pf-secchips{display:flex;flex-wrap:wrap;gap:5px}
body[data-theme=gemini] #view .pf-page .pf-secchips span{border:1px solid var(--today-rule);padding:3px 7px;font-size:9px;color:var(--ink2);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
body[data-theme=gemini] #view .pf-page .pf-secchips span.x{border-color:var(--dn);color:var(--dn);background:color-mix(in srgb,var(--dn) 8%,transparent)}
body[data-theme=gemini] #view .pf-page .pf-secchips span b{font-weight:700}

body[data-theme=gemini] #view .pf-page .pf-divs{border:1px solid var(--today-rule);margin-top:12px;overflow-x:auto}
body[data-theme=gemini] #view .pf-page .pf-divs svg{display:block;width:100%;min-width:560px;height:auto}
body[data-theme=gemini] #view .pf-page .pf-divs text{font-family:inherit;font-size:9px;fill:var(--ink3)}
body[data-theme=gemini] #view .pf-page .pf-divs .grid{stroke:var(--today-rule);stroke-width:1}
body[data-theme=gemini] #view .pf-page .pf-divs .now{stroke:var(--up);stroke-width:1}
body[data-theme=gemini] #view .pf-page .pf-legend{display:flex;flex-wrap:wrap;gap:6px 16px;padding:8px 0 0;font-size:9px;color:var(--ink2);align-items:center}
body[data-theme=gemini] #view .pf-page .pf-legend span{display:inline-flex;gap:6px;align-items:center}

body[data-theme=gemini] #view .pf-page .pf-tip{position:fixed;pointer-events:none;z-index:50;background:var(--paper);border:1px solid var(--ink1);padding:8px 10px;font-size:10px;line-height:1.55;color:var(--ink1);box-shadow:3px 3px 0 color-mix(in srgb,var(--ink1) 12%,transparent);display:none;max-width:280px}
body[data-theme=gemini] #view .pf-page .pf-tip b{font-weight:600}
body[data-theme=gemini] #view .pf-page .pf-tip span{color:var(--ink3)}
body[data-theme=gemini] #view .pf-page .pf-toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);background:var(--ink1);color:var(--paper);font-size:10px;padding:8px 12px;display:none;gap:12px;align-items:center;z-index:60}
body[data-theme=gemini] #view .pf-page .pf-toast button{all:unset;cursor:pointer;text-decoration:underline;font-weight:700}
body[data-theme=gemini] #view .pf-page .up{color:var(--up)}
body[data-theme=gemini] #view .pf-page .dn{color:var(--dn)}
body[data-theme=gemini] #view .pf-page .mut{color:var(--ink3)}
body[data-theme=gemini] #view .pf-page .pf-foot{font-size:9px;line-height:1.6;color:var(--ink3);margin:18px 0 0;max-width:110ch}

body[data-theme=gemini] #view .pf-page{font-variant-numeric:tabular-nums}
body[data-theme=gemini] #view .pf-page .today-section-head{margin-top:34px;flex-wrap:wrap;row-gap:8px}
body[data-theme=gemini] #view .pf-page .today-section-head .today-kicker{min-width:0}
body[data-theme=gemini] #view .pf-page .today-section-head + .card,body[data-theme=gemini] #view .pf-page .today-section-head + .pf-tree{margin-top:14px}

body[data-theme=gemini] #view .pf-page .pf-bars{display:flex;flex-direction:column;gap:2px}
body[data-theme=gemini] #view .pf-page .pf-bar{display:flex;flex-direction:column;gap:6px;padding:8px 10px;margin:0 -10px;min-width:0;transition:background-color 120ms ease}
body[data-theme=gemini] #view .pf-page .pf-bar:hover{background:var(--today-hover)}
body[data-theme=gemini] #view .pf-page .pf-bar[data-go]{cursor:pointer}
body[data-theme=gemini] #view .pf-page .pf-bar-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-width:0;font-size:11px}
body[data-theme=gemini] #view .pf-page .pf-bar-lbl{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink1)}
body[data-theme=gemini] #view .pf-page .pf-bar-top b{flex:none;font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink1)}
body[data-theme=gemini] #view .pf-page .pf-bar-trk{display:block;height:6px;background:color-mix(in srgb,var(--ink1) 8%,transparent)}
body[data-theme=gemini] #view .pf-page .pf-bar-trk i{display:block;height:100%;background:var(--ink1);opacity:.8;transition:opacity 120ms ease}
body[data-theme=gemini] #view .pf-page .pf-bar:hover .pf-bar-trk i{opacity:1}

body[data-theme=gemini] #view .pf-page .pf-divs g.bar{cursor:default}
body[data-theme=gemini] #view .pf-page .pf-divs g.bar rect{transition:opacity 120ms ease}
body[data-theme=gemini] #view .pf-page .pf-divs g.bar:hover rect{opacity:1}
body[data-theme=gemini] #view .pf-page .pf-fall g[data-go]:hover .lbl{text-decoration:underline}
body[data-theme=gemini] #view .pf-page .pf-hold tbody tr{transition:background-color 120ms ease}
body[data-theme=gemini] #view .pf-page .pf-hold tbody tr:hover{background:var(--today-hover)}

@media (max-width:900px){
  body[data-theme=gemini] #view .pf-page .pf-tree{aspect-ratio:4/3}
  body[data-theme=gemini] #view .pf-page .pf-xstats{grid-template-columns:repeat(2,minmax(0,1fr))}
  body[data-theme=gemini] #view .pf-page .pf-rule{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"h h" "viz v";gap:12px 18px}
  body[data-theme=gemini] #view .pf-page .pf-rule-viz{padding-inline-start:30px}
}
@media (max-width:620px){
  body[data-theme=gemini] #view .pf-page{padding:10px 16px 26px}
  body[data-theme=gemini] #view .pf-page .today-hero{grid-template-columns:1fr}
  body[data-theme=gemini] #view .pf-page .today-stance{border-inline-end:0;border-bottom:1px solid var(--today-rule)}
  body[data-theme=gemini] #view .pf-page .pf-tree{aspect-ratio:3/4}
  body[data-theme=gemini] #view .pf-page .pf-xstat{padding:14px}
  body[data-theme=gemini] #view .pf-page .pf-xv{font-size:22px}
  body[data-theme=gemini] #view .pf-page .pf-rule{padding:16px 6px}
  body[data-theme=gemini] #view .pf-page .pf-add{grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:14px}
  body[data-theme=gemini] #view .pf-page .pf-add label:nth-of-type(3),body[data-theme=gemini] #view .pf-page .pf-add button{grid-column:1/-1}
  body[data-theme=gemini] #view .pf-page .pf-hold :is(th,td):is(:nth-child(2),:nth-child(3),:nth-child(4),:nth-child(5),:nth-child(8),:nth-child(9)){display:none}
  body[data-theme=gemini] #view .pf-page .pf-hold td:first-child span{display:block;max-width:78px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  body[data-theme=gemini] #view .pf-page .pf-hold table{min-width:0;width:100%}
  body[data-theme=gemini] #view .pf-page .pf-hold :is(th,td){padding-inline:6px}
  body[data-theme=gemini] #view .pf-page .pf-hold + .pf-legend{display:none}
  body[data-theme=gemini] #view .pf-page .today-section-head{margin-top:26px}
  body[data-theme=gemini] #view .pf-page .pf-bar{padding:8px 6px;margin:0 -6px}
  body[data-theme=gemini] #view .pf-page .pf-tree button{padding:7px 8px}
}
@media (max-width:420px){
  body[data-theme=gemini] #view .pf-page .pf-xstats{grid-template-columns:1fr}
}
