*{box-sizing:border-box;margin:0;padding:0}html{scrollbar-gutter:stable}body{font-family:"Source Sans 3",-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#fafaf7;color:#333;line-height:1.7;font-size:18px;-webkit-font-smoothing:antialiased}.app{min-height:100vh;display:flex;flex-direction:column;--header-top-gap: 14px;overflow-anchor:none}.visualization-wide{max-width:520px;margin:0 auto;padding:0 1.5rem;width:100%}.app-content{min-height:100vh;display:flex;flex-direction:column}.hero-section{max-width:980px;margin:0 auto;padding:.5rem 1.5rem 0;width:100%}.hero-section.pinned{position:sticky;top:0;z-index:10;background:#fafaf7}.hero-map{width:100%;max-width:100%;height:auto;display:block;margin:0 auto;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;transition:max-width .75s cubic-bezier(.4,0,.2,1)}.hero-section.compact .hero-map{max-width:70%}.legend-gradient{height:12px;border-radius:4px;background:linear-gradient(to right,#c93135,#f0f0f0,#2e6da4)}.legend-gradient.lean{background:linear-gradient(to right,#c93135,#f0f0f0,#2e6da4)}.legend-labels{display:flex;justify-content:space-between;font-size:.8rem;color:#666}.app-title{max-width:760px;margin:0 auto;padding:.4rem 1.5rem .7rem;text-align:center}.app-title h1{font-family:Playfair Display,Georgia,serif;font-size:clamp(1.6rem,3vw,2.1rem);font-weight:600;color:#111;line-height:1.12;margin:0;text-wrap:balance}.app-title-kicker{display:block;font-size:.75em;font-weight:500;letter-spacing:.02em;margin-bottom:.25rem}.app-title-name{display:block}.app-intro,.match-instructions,.results-headline{max-width:620px;margin:0 auto;padding:0 1.5rem;font-size:.94rem;line-height:1.55;color:#444;text-indent:1.5em}.app-intro p{margin:0}.action-row{display:flex;justify-content:center;align-items:center;min-height:3.25rem;padding:.7rem 1.5rem 1.5rem}.finish-row{display:flex;justify-content:center;gap:.6rem;padding:1rem 1.5rem .5rem}.start-btn{display:inline-block;padding:.6rem 2.75rem;background:#111;border:none;border-radius:999px;font-family:inherit;font-size:.95rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#fff;cursor:pointer;transition:background .15s ease,transform .15s ease}.start-btn:hover:enabled{background:#333;transform:translateY(-1px)}.start-btn:disabled{cursor:default}.finish-btn,.try-2032-btn{display:inline-block;padding:.5rem 2rem;background:#000;border:none;border-radius:999px;font-family:inherit;font-size:.8rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#fff;cursor:pointer;transition:background .15s ease,transform .15s ease}.finish-btn:hover:enabled,.try-2032-btn:hover{background:#333;transform:translateY(-1px)}.finish-btn:disabled{cursor:default}.restart-btn{display:inline-block;padding:.5rem 1.5rem;background:#de7128;border:none;border-radius:999px;font-family:inherit;font-size:.8rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#fff;cursor:pointer;transition:filter .15s ease,transform .15s ease}.restart-btn:hover{filter:brightness(.92);transform:translateY(-1px)}.results-panel{text-align:center;padding:0 0 1rem}.app-content.showing-results{overflow:clip}.results-viewport .match-columns{animation-name:results-from-bottom;animation-duration:1.3s}@media(hover:none)and (pointer:coarse){.results-viewport .match-columns{animation-duration:1.6s}}@keyframes results-from-bottom{0%{transform:translateY(100vh);opacity:0}to{transform:translateY(0);opacity:1}}.results-headline{margin-bottom:12px}.headline-figure{font-weight:700}.pact-roster{margin-top:0}.match-instructions,.results-headline{margin-top:var(--header-top-gap)}.map-header-reveal{overflow:hidden}.map-header-reveal .match-instructions,.map-header-reveal .results-headline{animation:header-from-map .65s cubic-bezier(.22,1,.36,1) both}@keyframes header-from-map{0%{transform:translateY(calc(-100% - var(--header-top-gap)));opacity:0}to{transform:translateY(0);opacity:1}}.match-columns-viewport{overflow:hidden;position:relative;z-index:1;transition:margin-top var(--row-travel-ms, .55s) cubic-bezier(.4,0,.2,1)}.match-columns-viewport.risen{background:#fafaf7}.match-columns{max-width:620px;animation:rise-from-bottom .75s cubic-bezier(.22,1,.36,1) both}@keyframes rise-from-bottom{0%{transform:translateY(70vh);opacity:0}to{transform:translateY(0);opacity:1}}.bipartite-graph-wrapper{display:flex;flex-direction:column}.bipartite-graph{width:100%;max-width:420px;height:auto;margin:0 auto;text-rendering:geometricPrecision;overflow:visible}.bipartite-graph .state-box{cursor:pointer;transition:transform var(--row-travel-ms) cubic-bezier(.4,0,.2,1)}.bipartite-graph .state-box.matched{pointer-events:none}.bipartite-graph .state-box.settling .state-box-border{transition:stroke var(--seal-count-ms) ease var(--pact-count-ms)}.bipartite-graph .match-link,.bipartite-graph .pact-heading{transition:transform var(--row-travel-ms) cubic-bezier(.4,0,.2,1)}.bipartite-graph .pact-heading,.bipartite-graph .pact-remove{animation:pact-settle-in .2s ease-out var(--row-travel-ms) backwards}@keyframes pact-settle-in{0%{opacity:0}to{opacity:1}}.bipartite-graph .match-link.sealing .pact-half{stroke-dasharray:1;animation:pact-draw var(--seal-count-ms) ease var(--row-travel-ms) both}@keyframes pact-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.bipartite-graph .match-link.sealing .pact-fade{animation:pact-fade-in var(--seal-count-ms) ease var(--pact-count-ms) both}@keyframes pact-fade-in{0%{opacity:0}to{opacity:1}}.bipartite-graph .pact-remove{cursor:pointer}.bipartite-graph .pact-remove circle,.bipartite-graph .pact-remove path{transition:fill .15s ease,stroke .15s ease}.bipartite-graph .pact-remove:hover circle{fill:#de7128}.bipartite-graph .pact-remove:hover path{stroke:#fff}@media(prefers-reduced-motion:reduce){.map-header-reveal .match-instructions,.map-header-reveal .results-headline,.match-columns,.results-viewport .match-columns{animation-duration:1ms}.bipartite-graph .state-box,.match-columns-viewport{transition-duration:1ms}.bipartite-graph .state-box.settling .state-box-border{transition-duration:1ms;transition-delay:0ms}.bipartite-graph .match-link,.bipartite-graph .match-link.sealing .pact-half,.bipartite-graph .match-link.sealing .pact-fade,.bipartite-graph .pact-heading,.bipartite-graph .pact-remove{transition-duration:1ms;animation-duration:1ms;animation-delay:0ms}}.article-footer{margin:auto auto 0;padding:.75rem 1.5rem;max-width:710px;text-align:center;font-size:.75rem;color:#aaa;width:100%}.article-footer p{margin:0}.article-footer a{color:#2166ac;text-decoration:none}.article-footer a:hover{text-decoration:underline}@media(max-width:768px){body{font-size:16px}.hero-section{padding:0}.visualization-wide{padding:0 .5rem}.hero-section.compact .hero-map{max-width:100%}.app-title,.app-intro,.match-instructions,.results-headline,.match-columns{padding-left:.25rem;padding-right:.25rem}.app-intro,.match-instructions,.results-headline,.match-columns{max-width:23.25rem}.app-title{padding-top:.4rem;padding-bottom:.6rem}.app-title h1{font-size:1.5rem}.action-row{padding:.6rem 1rem 1rem}}
