.epf-app{--epf-navy:#062d59;--epf-yellow:#ffca00;--epf-green:#1d720b;--epf-cream:#f2fbef;--epf-ink:#10263f;--epf-muted:#5c6f82;--epf-line:#dbe4ee;--epf-line-strong:#c2d0e0;--epf-surface:#ffffff;--epf-panel:#f6f9fc;--epf-band-contrib:#062d59;--epf-band-interest:#3aa021;--epf-marker:#ffca00;--epf-radius:12px;--epf-radius-sm:8px;--epf-gap:1.25rem;--epf-focus:0 0 0 3px rgba(6, 45, 89, 0.28);box-sizing:border-box;margin:2rem 0;color:var(--epf-ink);font-family:inherit;font-size:1rem;line-height:1.5;-webkit-text-size-adjust:100%}.epf-app *,.epf-app *::before,.epf-app *::after{box-sizing:border-box}.epf-app [hidden]{display:none!important}.epf-frame__body{container-type:inline-size}.epf-frame__title{display:flex;align-items:center;gap:.5rem;margin:0;padding:.85rem 1.25rem;background:var(--epf-navy);color:#fff;font-size:.95rem;font-weight:700;letter-spacing:.01em;line-height:1.3}.epf-frame--header{border:1px solid var(--epf-navy);border-radius:var(--epf-radius);background:var(--epf-surface);overflow:hidden;box-shadow:0 2px 6px rgb(6 45 89 / .08),0 12px 28px rgb(6 45 89 / .1)}.epf-frame--header>.epf-frame__body{padding:1.5rem}.epf-frame--card{border:1px solid var(--epf-line);border-radius:var(--epf-radius);background:var(--epf-surface);box-shadow:0 1px 3px rgb(6 45 89 / .06),0 8px 24px rgb(6 45 89 / .05)}.epf-frame--card>.epf-frame__body{padding:1.5rem}.epf-frame--tinted{border:0;border-radius:20px;background:var(--epf-cream)}.epf-frame--tinted>.epf-frame__body{padding:1.75rem}.epf-frame--tinted .epf-panel,.epf-frame--tinted .epf-chart,.epf-frame--tinted .epf-stat,.epf-frame--tinted .epf-zone{background:var(--epf-surface)}.epf-frame--inset{padding:1rem;border-radius:20px;background:linear-gradient(180deg,#eef5fa 0%,#f7fafc 100%)}.epf-frame--inset>.epf-frame__body{padding:1.5rem;border:1px solid var(--epf-line);border-radius:14px;background:var(--epf-surface)}.epf-frame--bold{border:2px solid var(--epf-navy);border-radius:14px;background:var(--epf-surface)}.epf-frame--bold>.epf-frame__body{padding:1.5rem}.epf-frame--none{border:0;background:none;box-shadow:none}@media (max-width:540px){.epf-frame--header>.epf-frame__body,.epf-frame--card>.epf-frame__body,.epf-frame--bold>.epf-frame__body,.epf-frame--tinted>.epf-frame__body,.epf-frame--inset>.epf-frame__body{padding:1rem}.epf-frame--inset{padding:.6rem}.epf-frame__title{padding:.7rem 1rem;font-size:.9rem}}.epf-app p{margin:0}.epf-shell{display:grid;gap:var(--epf-gap);grid-template-columns:1fr;align-items:start}@container (min-width:720px){.epf-shell{grid-template-columns:minmax(280px,21rem) 1fr}}.epf-panel{position:relative;background:var(--epf-panel);border:1px solid var(--epf-line);border-left:4px solid var(--epf-navy);border-radius:0 var(--epf-radius) var(--epf-radius) 0;padding:1.25rem 1.25rem 1rem}.epf-panel--accent{border-left-color:var(--epf-green);background:var(--epf-cream)}.epf-panel__title{margin:0 0 1rem;font-size:.95rem;font-weight:700;letter-spacing:.01em;color:var(--epf-navy)}.epf-field{margin-bottom:1.1rem}.epf-field:last-of-type{margin-bottom:.75rem}.epf-field__label{display:block;margin-bottom:.35rem;font-size:.9rem;font-weight:600;color:var(--epf-ink)}.epf-field__box{display:flex;align-items:stretch;background:var(--epf-surface);border:1px solid var(--epf-line-strong);border-radius:var(--epf-radius-sm);overflow:hidden;transition:border-color 0.12s ease,box-shadow 0.12s ease}.epf-field__box:focus-within{border-color:var(--epf-navy);box-shadow:var(--epf-focus)}.epf-field__affix{display:flex;align-items:center;padding:0 .6rem;background:var(--epf-panel);color:var(--epf-muted);font-size:.9rem;font-weight:600;white-space:nowrap}.epf-field__affix--pre{border-right:1px solid var(--epf-line)}.epf-field__affix--post{border-left:1px solid var(--epf-line)}.epf-field input[type="number"],.epf-field select{width:100%;min-width:0;padding:.55rem .7rem;border:0;background:#fff0;color:inherit;font:inherit;font-variant-numeric:tabular-nums;appearance:none;-webkit-appearance:none}.epf-field input[type="number"]:focus,.epf-field select:focus{outline:none}.epf-field select{padding-right:2.2rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5l5-5' fill='none' stroke='%235c6f82' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;background-size:12px 8px;cursor:pointer}.epf-field--invalid .epf-field__box{border-color:#b3261e}.epf-field__error{margin-top:.3rem;min-height:1.1rem;font-size:.8rem;color:#b3261e}.epf-field__error:empty{min-height:0}.epf-range{display:block;width:100%;margin:.55rem 0 0;padding:0;background:#fff0;appearance:none;-webkit-appearance:none;cursor:pointer}.epf-range::-webkit-slider-runnable-track{height:6px;border-radius:999px;background:linear-gradient(to right,var(--epf-navy) 0%,var(--epf-navy) var(--epf-range-fill,0%),var(--epf-line-strong) var(--epf-range-fill,0%),var(--epf-line-strong) 100%)}.epf-range::-moz-range-track{height:6px;border-radius:999px;background:var(--epf-line-strong)}.epf-range::-moz-range-progress{height:6px;border-radius:999px;background:var(--epf-navy)}.epf-range::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;margin-top:-7px;border:3px solid var(--epf-navy);border-radius:50%;background:var(--epf-surface);box-shadow:0 1px 3px rgb(6 45 89 / .3)}.epf-range::-moz-range-thumb{width:20px;height:20px;border:3px solid var(--epf-navy);border-radius:50%;background:var(--epf-surface);box-shadow:0 1px 3px rgb(6 45 89 / .3)}.epf-range:focus-visible::-webkit-slider-thumb{box-shadow:var(--epf-focus)}.epf-range:focus-visible::-moz-range-thumb{box-shadow:var(--epf-focus)}.epf-app .epf-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .85rem;border:1px solid var(--epf-line-strong);border-radius:var(--epf-radius-sm);background:var(--epf-surface);color:var(--epf-navy);font:inherit;font-size:.85rem;font-weight:600;text-decoration:none;cursor:pointer;transition:background-color 0.12s ease,border-color 0.12s ease,color 0.12s ease}.epf-app .epf-btn:hover,.epf-app .epf-btn:focus,.epf-app .epf-btn:active{background:var(--epf-cream);border-color:var(--epf-navy);color:var(--epf-navy)}.epf-app .epf-btn:focus-visible{outline:none;box-shadow:var(--epf-focus)}.epf-stats{display:grid;gap:.75rem;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:1rem}@container (min-width:1000px){.epf-stats{grid-template-columns:repeat(4,minmax(0,1fr))}}.epf-stat{padding:.7rem .85rem;border:1px solid var(--epf-line);border-top:3px solid var(--epf-line-strong);border-radius:var(--epf-radius-sm);background:var(--epf-surface)}.epf-stat--primary{border-top-color:var(--epf-navy);background:var(--epf-cream)}.epf-stat--contrib{border-top-color:var(--epf-band-contrib)}.epf-stat--interest{border-top-color:var(--epf-band-interest)}.epf-stat__label{display:block;font-size:.78rem;color:var(--epf-muted)}.epf-stat__value{display:block;margin-top:.15rem;font-size:1.35rem;font-weight:700;line-height:1.2;color:var(--epf-navy);font-variant-numeric:tabular-nums;word-break:break-word}.epf-stat--primary .epf-stat__value{font-size:1.6rem}.epf-chart{position:relative;border:1px solid var(--epf-line);border-radius:var(--epf-radius-sm);background:var(--epf-surface);padding:.5rem;aspect-ratio:720 / 320;min-height:230px}.epf-chart__svg{display:block;width:100%;height:100%;overflow:visible}.epf-chart__grid line{stroke:var(--epf-line);stroke-width:1}.epf-chart__axis text{fill:var(--epf-muted);font-size:12px;font-family:inherit}.epf-chart__guide{stroke:var(--epf-navy);stroke-width:1;stroke-dasharray:3 3}.epf-chart__dot{fill:var(--epf-surface);stroke-width:2.5}.epf-chart__marker{stroke:var(--epf-marker);stroke-width:2.5;stroke-dasharray:5 4}.epf-chart__hit{fill:#fff0;touch-action:none;cursor:crosshair}.epf-chart__empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:1rem;text-align:center;color:var(--epf-muted);font-size:.9rem}.epf-chart__tip{position:absolute;z-index:2;transform:translate(-50%,-100%);min-width:9.5rem;padding:.5rem .65rem;border-radius:var(--epf-radius-sm);background:var(--epf-navy);color:#fff;font-size:.8rem;line-height:1.45;pointer-events:none;box-shadow:0 6px 18px rgb(6 45 89 / .25)}.epf-chart__tip[hidden]{display:none}.epf-chart__tip b{display:block;margin-bottom:.2rem;font-size:.82rem}.epf-chart__tip span{display:flex;justify-content:space-between;gap:1rem;font-variant-numeric:tabular-nums}.epf-chart__tip i{font-style:normal;opacity:.75}.epf-legend{display:flex;flex-wrap:wrap;gap:.35rem 1.1rem;margin-top:.6rem;font-size:.82rem;color:var(--epf-muted)}.epf-legend span{display:inline-flex;align-items:center;gap:.4rem}.epf-legend i{width:12px;height:12px;border-radius:3px;background:currentColor}.epf-legend .epf-swatch-contrib{color:var(--epf-band-contrib)}.epf-legend .epf-swatch-interest{color:var(--epf-band-interest)}.epf-legend .epf-swatch-marker{color:var(--epf-marker)}.epf-milestone{display:flex;gap:.6rem;align-items:flex-start;margin-top:1rem;padding:.7rem .9rem;border-left:4px solid var(--epf-yellow);border-radius:0 var(--epf-radius-sm) var(--epf-radius-sm) 0;background:#fffaea;font-size:.92rem}.epf-milestone[hidden]{display:none}.epf-details{margin-top:1rem;border:1px solid var(--epf-line);border-radius:var(--epf-radius-sm);background:var(--epf-surface)}.epf-app .epf-details>summary{padding:.6rem .9rem;color:var(--epf-navy);font-size:.9rem;font-weight:600;cursor:pointer;list-style:none}.epf-app .epf-details>summary:hover{color:var(--epf-navy);background:var(--epf-cream);border-radius:var(--epf-radius-sm)}.epf-details>summary::-webkit-details-marker{display:none}.epf-details>summary::before{content:"";display:inline-block;width:.5rem;height:.5rem;margin-right:.55rem;border-right:2px solid var(--epf-navy);border-bottom:2px solid var(--epf-navy);transform:rotate(-45deg) translateY(-2px);transition:transform 0.15s ease}.epf-details[open]>summary::before{transform:rotate(45deg) translateY(-2px)}.epf-details>summary:focus-visible{outline:none;box-shadow:var(--epf-focus);border-radius:var(--epf-radius-sm)}.epf-tablewrap{overflow-x:auto;max-height:22rem;overflow-y:auto;border-top:1px solid var(--epf-line)}.epf-table{width:100%;border-collapse:collapse;font-size:.86rem;font-variant-numeric:tabular-nums}.epf-table th,.epf-table td{padding:.45rem .7rem;text-align:right;border-bottom:1px solid var(--epf-line);white-space:nowrap}.epf-table th:first-child,.epf-table td:first-child{text-align:left}.epf-table thead th{position:sticky;top:0;z-index:1;background:var(--epf-panel);color:var(--epf-navy);font-weight:700}.epf-table tbody tr:nth-child(even){background:rgb(242 251 239 / .6)}.epf-table tbody tr.is-crossover{background:#fffaea;box-shadow:inset 3px 0 0 var(--epf-yellow)}.epf-app .epf-btn--primary{border-color:var(--epf-navy);background:var(--epf-navy);color:#fff}.epf-app .epf-btn--primary:hover,.epf-app .epf-btn--primary:focus,.epf-app .epf-btn--primary:active{background:#0a3c74;border-color:#0a3c74;color:#fff}.epf-app .epf-btn--lg{padding:.7rem 1.1rem;font-size:.95rem}.epf-app .epf-btn[disabled],.epf-app .epf-btn[disabled]:hover{opacity:.5;cursor:not-allowed;background:var(--epf-surface);border-color:var(--epf-line-strong);color:var(--epf-navy)}.epf-app .epf-btn--primary[disabled],.epf-app .epf-btn--primary[disabled]:hover{background:var(--epf-navy);border-color:var(--epf-navy);color:#fff}.epf-segmented{display:inline-flex;padding:3px;border:1px solid var(--epf-line-strong);border-radius:999px;background:var(--epf-panel)}.epf-app .epf-segmented button{padding:.4rem .95rem;border:0;border-radius:999px;background:#fff0;color:var(--epf-muted);font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;transition:background-color 0.12s ease,color 0.12s ease}.epf-app .epf-segmented button:hover,.epf-app .epf-segmented button:focus,.epf-app .epf-segmented button:active{background:var(--epf-cream);color:var(--epf-navy)}.epf-app .epf-segmented button[aria-pressed="true"],.epf-app .epf-segmented button[aria-pressed="true"]:hover,.epf-app .epf-segmented button[aria-pressed="true"]:focus,.epf-app .epf-segmented button[aria-pressed="true"]:active{background:var(--epf-navy);color:#fff}.epf-app .epf-segmented button:focus-visible{outline:none;box-shadow:var(--epf-focus)}.epf-meter{height:10px;border-radius:999px;background:#e6d3d0;overflow:hidden}.epf-meter__fill{height:100%;width:100%;border-radius:999px;background:var(--epf-band-interest);transition:width 0.25s ease,background-color 0.25s ease}.epf-moneymode{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .9rem;margin-bottom:1rem}.epf-moneymode__label{font-size:.85rem;font-weight:600;color:var(--epf-muted)}.epf-moneymode__note{flex-basis:100%;margin:0;font-size:.8rem;line-height:1.45;color:var(--epf-muted)}.epf-callout{padding:.8rem 1rem;border-left:4px solid var(--epf-navy);border-radius:0 var(--epf-radius-sm) var(--epf-radius-sm) 0;background:var(--epf-cream);font-size:.95rem}.epf-callout--win{border-left-color:var(--epf-band-interest)}.epf-callout--loss{border-left-color:#b3261e;background:#fdf3f2}.epf-note{margin-top:.75rem;font-size:.8rem;color:var(--epf-muted)}.epf-i18n{display:none}.epf-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.epf-app--error{padding:.9rem 1rem;border:1px solid #f0c000;border-left:4px solid #b3261e;border-radius:var(--epf-radius-sm);background:#fffaea;font-size:.9rem}@media (prefers-reduced-motion:reduce){.epf-app *{transition:none!important}}.epf-zones{display:grid;gap:.75rem;grid-template-columns:1fr}.epf-zone{display:flex;flex-direction:column;padding:.75rem;border:2px dashed var(--epf-line-strong);border-radius:var(--epf-radius);background:var(--epf-surface);transition:border-color 0.12s ease,background-color 0.12s ease}.epf-zone.is-over{border-color:var(--epf-navy);border-style:solid;background:var(--epf-cream)}.epf-zone__head{display:flex;flex-wrap:wrap;gap:.25rem .6rem;align-items:baseline;justify-content:space-between;margin-bottom:.6rem}.epf-zone__title{font-size:.9rem;font-weight:700;color:var(--epf-navy)}.epf-zone__total{font-size:1.05rem;font-weight:700;color:var(--epf-navy);font-variant-numeric:tabular-nums}.epf-zone__hint{flex-basis:100%;font-size:.78rem;color:var(--epf-muted)}.epf-zone__list{display:flex;flex-wrap:wrap;align-content:flex-start;gap:.3rem;min-height:3rem}.epf-zone--pile{border-style:solid;border-color:var(--epf-line);background:var(--epf-panel)}.epf-chip{display:inline-flex;align-items:center;justify-content:center;min-width:2.6rem;padding:.3rem .35rem;border-radius:5px;background:var(--epf-band-interest);color:#fff;font-size:.72rem;font-weight:700;font-variant-numeric:tabular-nums;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;box-shadow:inset 0 -2px 0 rgb(0 0 0 / .18)}.epf-chip:active{cursor:grabbing}.epf-bubble{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .5rem .35rem .7rem;border:1px solid var(--epf-line-strong);border-radius:999px;background:var(--epf-surface);font-size:.85rem;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}.epf-bubble:active{cursor:grabbing}.epf-bubble__name{font-weight:600;color:var(--epf-ink)}.epf-bubble__amount{display:inline-flex;align-items:center;padding:.1rem .3rem;border-radius:999px;background:var(--epf-panel)}.epf-app .epf-bubble__amount input{width:4.2rem;padding:.1rem .2rem;border:0;background:#fff0;color:var(--epf-navy);font:inherit;font-size:.8rem;font-weight:700;font-variant-numeric:tabular-nums;text-align:right;appearance:textfield;-moz-appearance:textfield}.epf-app .epf-bubble__amount input::-webkit-outer-spin-button,.epf-app .epf-bubble__amount input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.epf-app .is-dragging{opacity:.35}.epf-ghost{position:fixed;z-index:9999;margin:0;transform:translate(-50%,-50%) scale(1.08);pointer-events:none;opacity:.95;box-shadow:0 8px 22px rgb(6 45 89 / .35)}.epf-scenario{padding:1.1rem 1.2rem;border:1px solid var(--epf-line);border-left:4px solid var(--epf-navy);border-radius:0 var(--epf-radius) var(--epf-radius) 0;background:var(--epf-surface);font-size:1.05rem;line-height:1.5;min-height:6rem;display:flex;align-items:center}.epf-progress{display:flex;flex-wrap:wrap;gap:.3rem 1rem;align-items:baseline;justify-content:space-between;margin-bottom:.75rem;font-size:.85rem;color:var(--epf-muted)}.epf-progress__score{font-weight:700;color:var(--epf-navy);font-variant-numeric:tabular-nums}