:root{--ink:#14201b;--ink-soft:#3d4f46;--muted:#6b7c72;--surface:#eef2ef;--surface-2:#e2e9e4;--panel:#eef2efeb;--court:#1a4d3e;--court-deep:#0f3228;--ball:#c8f560;--ball-dim:#9bc43a;--line:#14201b1f;--danger:#b42318;--radius:10px;--font-display:"Inter", system-ui, sans-serif;--font-body:"Inter", system-ui, sans-serif;--shadow-soft:0 18px 50px #0f32281f;color:var(--ink);background:var(--surface);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;min-height:100%;margin:0}body{background:radial-gradient(ellipse 80% 60% at 70% 20%, #c8f5602e, transparent 55%), radial-gradient(ellipse 70% 50% at 10% 90%, #1a4d3e24, transparent 50%), linear-gradient(160deg, #f5f7f5 0%, var(--surface) 45%, #e8efe9 100%)}button,input,select{font:inherit}button{cursor:pointer}.app{grid-template-columns:minmax(260px,320px) 1fr;height:100%;min-height:100vh;display:grid;overflow:hidden}.app-with-clients{grid-template-columns:minmax(260px,320px) 1fr minmax(260px,320px)}.rail{z-index:2;background:var(--panel);border-right:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);flex-direction:column;gap:1.25rem;padding:1.5rem 1.25rem 1.25rem;animation:.55s both rise;display:flex;position:relative;overflow:auto}.clients-rail{z-index:2;background:var(--panel);border-left:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);flex-direction:column;gap:.75rem;padding:1.25rem 1rem 1rem;animation:.45s cubic-bezier(.2,.8,.2,1) both slide-in;display:flex;position:relative;overflow:hidden}.rail-tabs{flex-shrink:0;grid-template-columns:1fr 1fr;gap:.3rem;display:grid}.rail-tabs button{border:1px solid var(--line);font-family:var(--font-display);letter-spacing:.03em;text-transform:uppercase;color:var(--muted);background:0 0;border-radius:8px;padding:.5rem .25rem;font-size:.68rem;font-weight:700;transition:background .15s,color .15s,border-color .15s}.rail-tabs button:hover{background:var(--surface-2);color:var(--ink-soft)}.rail-tabs button.active{background:var(--court);border-color:var(--court);color:#f4faf6}.bridge-pair{flex-wrap:wrap;align-items:baseline;gap:.25rem .35rem;line-height:1.25;display:flex}.bridge-sep{color:var(--ink);opacity:.7;font-weight:800}.bridge-sides{color:var(--muted,#6b7280);opacity:.9;flex-basis:100%;font-size:.72rem;font-weight:600}.widowed-legend{margin:.35rem 0 0}.widowed-legend .leg-focus{color:#2f6f5e;font-weight:700}.widowed-legend .leg-silent{color:#9a3412;font-weight:700}.bridge-list .name{font-size:.86rem}.clients-header{flex-shrink:0}.clients-list{flex:1;min-height:0;padding-right:.15rem;overflow:auto}.brand{flex-direction:column;gap:.35rem;display:flex}.brand-mark{font-family:var(--font-display);letter-spacing:-.03em;color:var(--court-deep);font-size:1.55rem;font-weight:800;line-height:1.1}.brand-mark span{color:var(--court)}.brand-head{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.brand-head .brand-mark{flex:1;min-width:0}.brand-head .lang-switch{flex-shrink:0;margin-top:.2rem}.brand p{color:var(--muted);margin:0;font-size:.92rem;line-height:1.4}.stage{background:linear-gradient(#1a4d3e0f,#0000 30%),repeating-linear-gradient(90deg,#0000,#0000 47px,#1a4d3e08 48px);min-width:0;min-height:0;position:relative}.stage-empty{text-align:center;place-content:center;gap:.75rem;padding:2rem;animation:.6s both fade;display:grid;position:absolute;inset:0}.stage-empty h2{font-family:var(--font-display);letter-spacing:-.03em;color:var(--court-deep);margin:0;font-size:clamp(1.6rem,3vw,2.2rem)}.stage-empty p{max-width:28rem;color:var(--muted);margin:0}.meta-strip{color:var(--ink-soft);flex-wrap:wrap;gap:.5rem .85rem;font-size:.8rem;display:flex}.meta-strip strong{color:var(--court-deep);font-weight:650}.control-block{flex-direction:column;gap:.55rem;display:flex}.control-block h3,.list-block h3,.detail h3{font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0;font-size:.78rem;font-weight:700}.row{align-items:center;gap:.5rem;display:flex}.demo-row{flex-wrap:wrap}.demo-row .btn{text-align:center;flex:8.5rem}.btn{appearance:none;border-radius:var(--radius);background:var(--court);color:#f4faf6;border:1px solid #0000;padding:.65rem .9rem;font-weight:650;transition:transform .15s,background .15s,border-color .15s}.btn:hover{background:var(--court-deep);transform:translateY(-1px)}.btn-ghost{color:var(--court-deep);border-color:var(--line);background:0 0}.btn-ghost:hover{background:var(--surface-2);transform:none}.btn-ball{background:var(--ball);color:var(--court-deep)}.btn-ball:hover{background:var(--ball-dim)}.field{border:1px solid var(--line);border-radius:var(--radius);width:100%;color:var(--ink);background:#fff;padding:.55rem .7rem}.field:focus{border-color:var(--court);outline:2px solid #c8f5608c}.field:disabled{opacity:.65}.field-label{color:var(--ink-soft);gap:.3rem;font-size:.82rem;font-weight:650;display:grid}.hint{color:var(--muted);margin:0;font-size:.78rem;line-height:1.35}.check-row{color:var(--ink-soft);cursor:pointer;align-items:center;gap:.55rem;font-size:.88rem;display:flex}.check-row input{accent-color:var(--court);width:1rem;height:1rem}.radio-group{flex-direction:column;gap:.35rem;display:flex}.type-tag{color:var(--muted);font-size:.75rem;font-weight:500}.excluded-list .name{opacity:.75;text-decoration:line-through}.detail-grid{gap:1.05rem;margin:0;display:grid}.detail-grid div{gap:.28rem;display:grid}.detail-grid dt{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);opacity:.85;font-size:.65rem;font-weight:600}.detail-grid dd{color:var(--court-deep);word-break:break-word;margin:0;font-size:1rem;font-weight:600;line-height:1.3}.plain-list{flex-direction:column;gap:.35rem;margin:0;padding:0;font-size:.9rem;list-style:none;display:flex}.loading-overlay{z-index:5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:radial-gradient(circle at 50% 40%,#c8f56029,#0000 45%),#eef2efc7;place-items:center;padding:2rem;animation:.25s both fade;display:grid;position:absolute;inset:0}.loading-card{text-align:center;border:1px solid var(--line);background:var(--panel);max-width:22rem;box-shadow:var(--shadow-soft);border-radius:16px;justify-items:center;gap:.75rem;padding:1.75rem 1.5rem;animation:.4s both rise;display:grid}.loading-card h2{font-family:var(--font-display);letter-spacing:-.02em;color:var(--court-deep);margin:0;font-size:1.35rem}.loading-card p{color:var(--muted);min-height:1.4em;margin:0}.loading-orb{background:radial-gradient(circle at 35% 30%, #fff8, transparent 40%), var(--ball);border-radius:50%;width:3rem;height:3rem;animation:1.1s ease-in-out infinite pulse-orb;box-shadow:0 0 0 8px #c8f56033}.loading-bar{background:var(--surface-2);border-radius:999px;width:100%;height:4px;margin-top:.35rem;overflow:hidden}.loading-bar span{border-radius:inherit;background:linear-gradient(90deg, var(--court), var(--ball));width:40%;height:100%;animation:1.2s ease-in-out infinite slide-bar;display:block}@keyframes pulse-orb{0%,to{transform:scale(.92);box-shadow:0 0 0 6px #c8f56026}50%{transform:scale(1);box-shadow:0 0 0 14px #c8f56014}}@keyframes slide-bar{0%{transform:translate(-120%)}to{transform:translate(280%)}}.slider-row{gap:.35rem;display:grid}.slider-row label{color:var(--ink-soft);justify-content:space-between;font-size:.85rem;display:flex}input[type=range]{width:100%;accent-color:var(--court)}.list-block{flex-direction:column;gap:.45rem;min-height:0;display:flex}.player-list{flex-direction:column;gap:.25rem;margin:0;padding:0;list-style:none;display:flex}.player-list button{text-align:left;width:100%;color:inherit;background:0 0;border:0;border-radius:8px;grid-template-columns:1fr auto;align-items:baseline;gap:.5rem;padding:.45rem .5rem;transition:background .15s;display:grid}.player-list button:hover,.player-list button.active{background:var(--surface-2)}.player-list .name{font-size:.92rem;font-weight:600}.player-list .degree{font-variant-numeric:tabular-nums;color:var(--court);font-size:.85rem;font-weight:700}.retention-badge{font-variant-numeric:tabular-nums;letter-spacing:.01em;border-radius:4px;align-items:center;width:fit-content;padding:.12rem .4rem;font-size:.72rem;font-weight:700;line-height:1.2;display:inline-flex}.retention-compact{padding:.08rem .32rem;font-size:.65rem}.retention-tone-gray{color:var(--ink-soft);background:#3d4f461a}.retention-tone-yellow{color:#6b5300;background:#eab30847}.retention-tone-red{color:#7a1f16;background:#b4231829}.retention-tone-green-soft{color:#1a4d3e;background:#c8f56059}.retention-tone-green-strong{color:#0f3228;background:#9bc43a8c}.retention-tone-new{color:var(--court-deep);background:#1a4d3e1f}.retention-risk{color:#7a1f16;background:#b4231833;box-shadow:inset 0 0 0 1px #b4231873}.retention-row{margin-top:-.15rem}.value-summary{background:#c8f5601f;border:1px solid #1a4d3e2e;border-radius:10px;flex-direction:column;gap:.6rem;padding:.75rem;display:flex}.value-summary>div{flex-direction:column;gap:.15rem;display:flex}.value-headline strong{font-size:1.45rem;line-height:1.15}.value-range{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.7rem}.value-section{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border-top:1px solid #1a4d3e29;margin:.25rem 0 0;padding-top:.5rem;font-size:.62rem;font-weight:700}.value-formula{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.value-formula li{grid-template-columns:1fr auto;gap:.1rem .5rem;display:grid}.formula-label{color:var(--ink-soft);font-size:.73rem;font-weight:600}.formula-value{color:var(--court-deep);font-variant-numeric:tabular-nums;text-align:right;font-size:.78rem;font-weight:700}.formula-detail{color:var(--muted);grid-column:1/-1;font-size:.7rem;line-height:1.35}.risk-total{background:#c8f5601f;border:1px solid #1a4d3e2e;border-radius:10px;flex-direction:column;gap:.15rem;margin-bottom:.5rem;padding:.6rem .7rem;display:flex}.risk-total em{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.62rem;font-style:normal;font-weight:700}.risk-total strong{color:var(--court-deep);font-variant-numeric:tabular-nums;font-size:1.3rem}.risk-total span{color:var(--muted);font-size:.7rem;line-height:1.35}.data-issues{color:var(--ink-soft);background:#9a34120f;border-left:2px solid #9a341273;border-radius:0 6px 6px 0;margin-bottom:.5rem;padding:.5rem .6rem;font-size:.7rem}.data-issues strong{letter-spacing:.06em;text-transform:uppercase;color:#9a3412;margin-bottom:.2rem;font-size:.62rem;display:block}.data-issues ul{flex-direction:column;gap:.15rem;margin:0;padding-left:.95rem;line-height:1.35;display:flex}.court-occupancy{color:var(--ink-soft);background:#1a4d3e0a;border:1px solid #1a4d3e24;border-radius:10px;flex-direction:column;gap:.45rem;margin-bottom:.5rem;padding:.55rem .65rem;font-size:.7rem;display:flex}.court-occupancy>strong{letter-spacing:.06em;text-transform:uppercase;color:var(--court-deep);font-size:.62rem}.court-occupancy-sub{color:var(--muted);font-size:.68rem;line-height:1.35}.occupancy-group{flex-direction:column;gap:.2rem;display:flex}.occupancy-group>em{color:var(--court-deep);font-size:.68rem;font-style:normal;font-weight:700}.occupancy-group ul{flex-direction:column;gap:.12rem;margin:0;padding:0;list-style:none;display:flex}.occupancy-group li{justify-content:space-between;align-items:baseline;gap:.5rem;line-height:1.3;display:flex}.occupancy-nums{font-variant-numeric:tabular-nums;text-align:right;align-items:baseline;gap:.4rem;display:flex}.occupancy-nums strong{color:var(--court-deep);min-width:2.4rem}.occupancy-nums span{color:var(--muted);white-space:nowrap;font-size:.64rem}.method-note{color:var(--ink-soft);font-size:.72rem}.method-note summary{cursor:pointer;color:var(--court-deep);padding:.15rem 0;font-size:.72rem;font-weight:700}.method-note ol{flex-direction:column;gap:.3rem;margin:.4rem 0 0;padding-left:1.05rem;line-height:1.4;display:flex}.method-note strong,.value-summary .method-note strong{color:var(--court-deep);font-size:inherit;font-weight:700}.method-warning{color:var(--ink-soft);background:#9a34120f;border-left:2px solid #9a341273;border-radius:0 6px 6px 0;margin:.5rem 0 0;padding:.45rem .55rem;line-height:1.4}.value-summary em{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.62rem;font-style:normal;font-weight:700}.value-summary strong{color:var(--court-deep);font-variant-numeric:tabular-nums;font-size:1.05rem}.value-summary>p{color:var(--ink-soft);margin:0;font-size:.76rem}.risk-explanation{flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.risk-explanation li{color:var(--ink-soft);gap:.1rem;font-size:.73rem;display:grid}.risk-explanation strong{font-size:.75rem}.risk-explanation span{color:var(--muted)}.risk-score{color:#9a3412!important}.retention-stat{font-size:inherit;font-weight:inherit}.detail-drawer{z-index:3;background:var(--panel);border:1px solid var(--line);width:min(340px,100% - 2rem);box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:14px;flex-direction:column;gap:.75rem;padding:1.1rem 1.15rem;animation:.35s cubic-bezier(.2,.8,.2,1) both slide-in;display:flex;position:absolute;top:1rem;bottom:1rem;right:1rem;overflow:hidden}.detail-drawer-header{flex-shrink:0;justify-content:space-between;align-items:start;gap:.75rem;display:flex}.detail-drawer-close{border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:2.1rem;height:2.1rem;padding:0;line-height:0;display:inline-flex}.detail-drawer-close svg{display:block}.detail-drawer-tabs{flex-shrink:0;grid-template-columns:1fr 1fr}.booking-type-list li{border-radius:8px;flex-direction:column;gap:.25rem;padding:.45rem .5rem;display:flex}.booking-type-row{grid-template-columns:1fr auto;align-items:baseline;gap:.5rem;display:grid}.booking-type-row .meta{color:var(--muted);letter-spacing:.02em;font-size:.72rem;font-weight:600;display:block}.booking-type-bar{background:var(--surface-2);border-radius:999px;height:4px;overflow:hidden}.booking-type-bar:after{content:"";height:100%;width:var(--pct,0%);background:var(--court);border-radius:inherit;display:block}.detail-drawer-body{overscroll-behavior:contain;flex-direction:column;flex:auto;gap:.75rem;min-height:0;padding-right:.35rem;display:flex;overflow-y:auto}.detail-drawer-partners{gap:.45rem}.detail-drawer-partners .partner-scroll{overscroll-behavior:contain;flex:auto;min-height:0;overflow:auto}.detail-drawer h2{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:1.35rem;line-height:1.15}.detail-drawer .sub{color:var(--muted);margin:.25rem 0 0;font-size:.85rem}.stat-row{gap:1rem;display:flex}.stat{flex-direction:column;gap:.1rem;display:flex}.stat em{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.72rem;font-style:normal;font-weight:700}.stat strong{font-variant-numeric:tabular-nums;color:var(--court-deep);font-size:1.25rem}.hud{z-index:2;background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:var(--ink-soft);border-radius:999px;flex-wrap:wrap;gap:.75rem;padding:.55rem .75rem;font-size:.8rem;animation:.7s .15s both fade;display:flex;position:absolute;bottom:1rem;left:1rem}.hud strong{color:var(--court-deep)}.error{color:var(--danger);margin:0;font-size:.85rem}.graph-canvas{width:100%;height:100%;position:relative}.graph-controls{z-index:2;gap:.4rem;display:flex;position:absolute;top:1rem;right:1rem}.graph-control{border:1px solid var(--line);background:var(--panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);font:inherit;color:var(--ink-soft);cursor:pointer;border-radius:999px;padding:.4rem .8rem;font-size:.78rem}.graph-control:hover{color:var(--court-deep);border-color:var(--court-deep)}.graph-control.is-on{background:var(--court-deep,#1a4d3e);border-color:var(--court-deep,#1a4d3e);color:#c8f560}.graph-canvas canvas{display:block}@media (width<=1100px){.app-with-clients{grid-template-columns:minmax(240px,280px) 1fr minmax(220px,260px)}}@media (width<=900px){.app{grid-template-rows:auto 1fr auto;grid-template-columns:1fr;height:auto;min-height:100vh}.rail{border-right:0;border-bottom:1px solid var(--line);max-height:none}.clients-rail{border-left:0;border-top:1px solid var(--line);max-height:40vh}.stage{min-height:55vh}.detail-drawer{width:auto;max-height:45%;inset:auto .75rem .75rem}}@keyframes rise{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:none}}@keyframes slide-in{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}.login-page{place-items:center;min-height:100%;padding:2rem 1rem;animation:.45s both fade;display:grid}.login-card{background:var(--panel);border:1px solid var(--line);border-radius:calc(var(--radius) + 4px);width:min(100%,22rem);box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);flex-direction:column;gap:.9rem;padding:1.75rem 1.5rem;animation:.55s both rise;display:flex}.login-card .btn{width:100%;margin-top:.25rem}.login-divider{color:var(--muted);align-items:center;gap:.75rem;margin:.15rem 0;font-size:.82rem;font-weight:650;display:flex}.login-divider:before,.login-divider:after{content:"";background:var(--line);flex:1;height:1px}.login-demo{margin-top:0}.lang-switch{border:1px solid var(--line);background:#ffffff0a;border-radius:999px;gap:.2rem;padding:.15rem;display:inline-flex}.lang-switch-btn{min-width:2.1rem;color:var(--muted);font:inherit;letter-spacing:.04em;cursor:pointer;background:0 0;border:none;border-radius:999px;padding:.2rem .45rem;font-size:.72rem;font-weight:750}.lang-switch-btn.active{background:var(--ball);color:var(--ink)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.login-loading{color:var(--muted);margin:0;font-weight:650}.session-row{align-items:center;gap:.5rem;margin-top:.35rem;display:flex}.session-user{color:var(--ink-soft);font-size:.82rem;font-weight:650}.btn-session{padding:.35rem .65rem;font-size:.78rem}
