@import "https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,400;0,600;0,800;0,900;1,800;1,900&display=swap";:root{--black:#000;--white:#fff;--blue-highlight:#1d6fe8;--blue-dim:#1249a3;--gray-lowlight:#8a8370;--gray-warm:#2a2a2a;--gray-border:#333;--gray-mid:#555;--font-display:"Barlow Condensed", sans-serif;--desktop-game-width:160px;--desktop-round-gap:.32rem;--desktop-final-gap:1rem;--desktop-champ-width:calc(var(--desktop-game-width) + 2rem);--desktop-center-width:calc((var(--desktop-game-width) * 2) + (var(--desktop-final-gap) * 2) + var(--desktop-champ-width));--desktop-region-width:calc((var(--desktop-game-width) * 4) + (var(--desktop-round-gap) * 3));--desktop-bracket-width:calc((var(--desktop-region-width) * 2) + var(--desktop-center-width));--desktop-side-pull-in:3rem;--panelHeightPortrait:clamp(360px, 80vh, 720px);--panelWidthLandscape:clamp(360px, 30vw, 620px);--navRailWidth:3.75rem;--overlayTop:0px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-display);background:var(--black);color:var(--white);-webkit-font-smoothing:antialiased;min-height:100vh}@media (width<=1400px){.game{min-width:140px}.bracket-center{min-width:170px}.region-rounds{gap:.35rem}.round--r32{padding:.75rem 0}.round--s16{padding:2.25rem 0}.round--e8{padding:4.5rem 0}}@media (width<=1200px){.game{min-width:125px;font-size:.72rem}.bracket-center{min-width:150px;padding:0 .25rem}.championship-center{min-width:calc(var(--desktop-game-width) + 2rem);max-width:calc(var(--desktop-game-width) + 2rem)}.final-four{gap:1rem}.region-rounds{gap:.25rem}.round--r32{padding:.5rem 0}.round--s16{padding:1.5rem 0}.round--e8{padding:3rem 0}.header-actions--left,.header-actions--right{min-width:160px}.header-btn,.header-actions .download-btn{padding:.4rem .65rem;font-size:.68rem}}@media (height<=500px){.bracket-header--sticky{padding-bottom:.25rem}.app-title{padding:.5rem 0 .15rem;font-size:1.6rem}.odds-total{padding:.1rem 0 .5rem}}@media (width<=700px){.bracket-header--sticky{padding:.65rem .6rem .6rem}.header-actions{gap:.25rem}.header-btn,.header-actions .download-btn{padding:.45rem .7rem;font-size:.7rem}}.app{margin:0 auto;padding:0 1rem 2rem}.app-title{letter-spacing:.04em;text-align:center;padding:.25rem 0 0;font-size:2.2rem;font-style:normal;font-weight:900}.reset-btn{font-family:var(--font-display);letter-spacing:.08em;color:var(--gray-lowlight);border:1px solid var(--gray-border);cursor:pointer;background:0 0;padding:.75rem 1.5rem;font-size:1rem;font-style:normal;font-weight:900;transition:color .15s,border-color .15s;display:block}.reset-btn:hover{color:var(--white);border-color:var(--white)}.odds-total{justify-content:center;align-items:baseline;gap:.75rem;padding:.15rem 0 0;display:flex}.odds-total-label{letter-spacing:.12em;color:var(--gray-mid);font-size:.75rem;font-weight:400;line-height:1}.odds-total-info{color:var(--gray-mid);cursor:pointer;background:0 0;border:none;padding:0 .2rem;font-size:.9rem;line-height:1;transition:color .15s}.odds-total-info:hover{color:var(--blue-highlight)}.odds-total-value{color:var(--blue-highlight);font-size:1.2rem;font-style:normal;font-weight:900;line-height:1;transition:all .3s}.game{background:var(--gray-warm);border:1px solid var(--gray-border);border-radius:3px;min-width:160px;font-size:.8rem;overflow:hidden}.game--empty{opacity:.3}.game--picked{border-color:var(--blue-highlight)}.game-slot{cursor:pointer;align-items:center;gap:.4rem;min-width:0;min-height:1.6rem;padding:.3rem .5rem;transition:background .1s;display:flex}.game-slot:hover{background:#ffffff0a}.game-slot--empty{cursor:default}.game-slot--picked{background:#1d6fe814}.game-slot--picked .team-name{color:var(--white)}.game-slot--picked .team-odds{color:var(--blue-highlight)}.game-slot--loser .team-name,.game-slot--loser .team-odds,.game-slot--loser .team-seed{color:var(--gray-lowlight);text-decoration:line-through}.game-slot--placeholder{cursor:default;opacity:.4}.team-seed{color:var(--gray-mid);text-align:right;min-width:1.2rem;font-size:.65rem;font-weight:600}.team-name{text-overflow:ellipsis;white-space:nowrap;text-transform:uppercase;letter-spacing:.02em;flex:1;min-width:0;font-size:.8rem;font-style:italic;font-weight:800;overflow:hidden}.team-odds{color:var(--gray-mid);text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:3.8rem;font-size:.75rem;font-weight:600;overflow:hidden}.bracket{padding:1rem 0;position:relative}.bracket-header{flex-direction:column;align-items:center;gap:.25rem;display:flex}.bracket-header--sticky{z-index:50;background:linear-gradient(#000000fa,#000000f5 60%,#000000eb);flex-direction:row;justify-content:space-between;align-items:center;padding:.75rem .75rem .7rem;display:flex;position:sticky;top:0}.header-center{flex-direction:column;flex:1;align-items:center;gap:.15rem;min-width:0;display:flex}.header-actions{flex-shrink:0;align-items:center;gap:.35rem;display:flex}.header-actions--left{justify-content:flex-start;min-width:210px}.header-actions--right{justify-content:flex-end;min-width:210px}.header-btn{font-family:var(--font-display);letter-spacing:.06em;color:var(--gray-lowlight);border:1px solid var(--gray-border);cursor:pointer;white-space:nowrap;background:0 0;padding:.45rem .75rem;font-size:.72rem;font-weight:800;transition:color .15s,border-color .15s}.header-btn:hover{color:var(--white);border-color:var(--white)}.header-actions .download-btn{min-width:unset;letter-spacing:.06em;padding:.45rem .75rem;font-size:.72rem}body.capture-mode .header-actions,.capture-fixed .header-actions{display:none}.bracket-header--inline{margin-bottom:.75rem;display:none}body.capture-mode .bracket-header--sticky,.capture-fixed .bracket-header--sticky{display:none}body.capture-mode .bracket-header--inline,.capture-fixed .bracket-header--inline{margin-bottom:.35rem;display:flex}body.capture-mode .app-title,.capture-fixed .app-title,body.capture-mode .odds-total,.capture-fixed .odds-total{white-space:nowrap}body.capture-mode .odds-total-info,.capture-fixed .odds-total-info{display:none}body.capture-mode .bracket,.capture-fixed.bracket{padding:.5rem 0}.app .bracket-zoom-container,.capture-fixed .bracket-zoom-container{width:100%;overflow:auto visible}.app .bracket-sides,.capture-fixed .bracket-sides{width:var(--desktop-bracket-width);min-width:var(--desktop-bracket-width);justify-content:center;align-items:center;gap:0;margin:0 auto;display:flex}.game-exact-path-odds{border-bottom:1px solid var(--gray-border);justify-content:space-between;align-items:baseline;gap:.4rem;min-width:0;padding:.2rem .5rem .25rem;display:flex;overflow:hidden}.game-derived-odds{border-top:1px solid var(--gray-border);flex-direction:column;gap:.15rem;min-width:0;padding:.2rem .5rem .3rem;display:flex;overflow:hidden}.game-derived-odds-row{justify-content:space-between;align-items:baseline;gap:.4rem;min-width:0;display:flex;overflow:hidden}.game-matchup-prob-label{letter-spacing:.12em;color:var(--gray-mid);white-space:nowrap;flex:auto;min-width:0;font-size:.58rem;font-weight:400;line-height:1}.game-matchup-prob-value{color:var(--blue-highlight);white-space:nowrap;text-overflow:ellipsis;text-align:right;flex:0 5.8rem;min-width:0;max-width:5.8rem;font-size:.78rem;font-weight:900;line-height:1;overflow:hidden}.game-matchup-prob-value--empty{color:var(--gray-lowlight)}.bracket-side{flex-direction:column;flex:none;gap:1.75rem;display:flex}.bracket-side--left{transform:translateX(var(--desktop-side-pull-in));margin-right:0}.bracket-side--right{transform:translateX(calc(var(--desktop-side-pull-in) * -1));margin-left:0}.bracket-center{flex-direction:column;justify-content:flex-start;align-self:stretch;align-items:center;min-width:200px;padding:0 .35rem;display:flex;position:relative}.bracket-watermark{text-align:center;font-family:var(--font-display);flex-direction:column;gap:.2rem;display:none}body.capture-mode .bracket-watermark,.capture-fixed .bracket-watermark{display:flex;position:absolute;top:88%;left:50%;transform:translate(-50%)}.capture-fixed .overlay-shell,.capture-fixed .overlay-backdrop,.capture-fixed .overlay-nav,.capture-fixed .overlay-panel{display:none!important}.bracket-watermark-line1{letter-spacing:.12em;color:var(--gray-mid);font-size:.75rem;font-weight:400;line-height:1}.bracket-watermark-line2{color:var(--blue-highlight);text-transform:uppercase;letter-spacing:.06em;font-size:1.5rem;font-style:normal;font-weight:900}.region{padding:.5rem 0}.region-title{letter-spacing:.04em;color:var(--white);margin-bottom:.5rem;font-size:1.4rem;font-style:normal;font-weight:900}.region--right .region-title{text-align:right;margin-left:auto}.region-rounds{gap:var(--desktop-round-gap);display:flex}.region--left .region-rounds{flex-direction:row}.region--right .region-rounds{flex-direction:row-reverse}.round{flex-direction:column;flex:1;justify-content:space-around;gap:.4rem;min-width:0;display:flex}.round--r32{padding:1rem 0}.round--s16{padding:3rem 0}.round--e8{padding:6rem 0}.final-four{justify-content:center;align-items:center;gap:var(--desktop-final-gap);flex-direction:row;width:100%;margin-top:auto;margin-bottom:auto;padding:1.5rem 0;display:flex}.app .bracket .game,.capture-fixed.bracket .game{width:var(--desktop-game-width);min-width:var(--desktop-game-width);max-width:var(--desktop-game-width);font-size:.78rem}.app .bracket .bracket-center,.capture-fixed.bracket .bracket-center{width:var(--desktop-center-width);min-width:var(--desktop-center-width);max-width:var(--desktop-center-width);padding:0 .35rem}.final-four-game{z-index:2;flex:none;justify-content:center;display:flex;position:relative}.app .championship-center,.capture-fixed .championship-center{width:var(--desktop-champ-width);min-width:var(--desktop-champ-width);max-width:var(--desktop-champ-width);background:var(--gray-warm);border:2px solid var(--blue-highlight);text-align:center;z-index:1;border-radius:4px;flex-direction:column;flex:none;align-items:stretch;padding:.75rem 1rem;display:flex;position:relative;box-shadow:0 0 24px #0009}.championship-game{width:100%;margin:0 auto}.champion-display{text-align:center;margin-bottom:.5rem}.champion-label{letter-spacing:.18em;text-transform:uppercase;color:var(--gray-lowlight);font-size:.7rem;font-weight:700}.champion-name{color:var(--blue-highlight);font-size:1.4rem;font-style:normal;font-weight:900}.champ-odds-block{justify-content:center;align-items:center;gap:.75rem;margin-top:.35rem;display:flex}.champ-odds-label-block,.champ-odds-value-block{flex-direction:column;justify-content:center;align-items:center;gap:.1rem;display:flex}.champ-odds-label{letter-spacing:.12em;color:var(--gray-mid);font-size:.58rem;font-weight:400;line-height:1.2}.champ-odds-value{color:var(--blue-highlight);font-size:.78rem;font-weight:900;line-height:1.2}.champ-odds-value--american{font-size:.7rem;font-weight:700}.championship-center .game{width:100%;margin:0 auto}.championship-center .game-slot{justify-content:center}.championship-center .team-seed,.championship-center .team-name,.championship-center .team-odds{text-align:center}.championship-center .team-name{font-style:normal}.export-wrapper{position:relative}.download-btn{font-family:var(--font-display);letter-spacing:.08em;background:var(--white);color:var(--black);cursor:pointer;border:none;padding:.75rem 1.5rem;font-size:1rem;font-style:normal;font-weight:900;transition:opacity .15s;display:block}.download-btn.download-btn--inverted{color:var(--white);border:1px solid var(--gray-border);background:#000000eb}.download-btn:hover{opacity:.85}.export-dropdown{background:var(--gray-warm);border:1px solid var(--gray-border);z-index:150;border-radius:3px;min-width:80px;margin-top:.25rem;position:absolute;top:100%;right:0;overflow:hidden}.export-dropdown.export-dropdown--left{left:0;right:auto}.export-option{width:100%;min-height:2.25rem;font-family:var(--font-display);letter-spacing:.08em;color:var(--white);cursor:pointer;text-align:left;background:0 0;border:none;padding:.65rem .9rem;font-size:.8rem;font-weight:800;transition:background .1s;display:block}@media (width<=700px),(height<=500px){.export-option{min-height:2.75rem;padding:.85rem 1rem;font-size:.9rem}}.export-option:hover{background:#ffffff14}.export-option+.export-option{border-top:1px solid var(--gray-border)}.data-sources{border-top:1px solid var(--gray-border);margin-top:2rem;padding-top:1rem;padding-bottom:0}@media (orientation:portrait) and (width<=900px){.data-sources{padding-bottom:calc(4.75rem + env(safe-area-inset-bottom))}}.data-sources-toggle{color:var(--gray-lowlight);font-family:var(--font-display);letter-spacing:.12em;cursor:pointer;background:0 0;border:none;align-items:center;gap:.5rem;padding:.25rem 0;font-size:.75rem;display:flex}.data-sources-toggle:hover{color:var(--white)}.data-sources-toggle-icon{text-align:center;width:1.2rem;font-size:1rem}.data-sources-content{color:var(--gray-lowlight);margin-top:1rem;padding:0 .5rem;font-size:.85rem;line-height:1.5}.data-sources-heading{font-family:var(--font-display);letter-spacing:.08em;color:var(--white);margin:1rem 0 .4rem;font-size:.8rem;font-weight:800}.data-sources-heading:first-child{margin-top:0}.data-sources-list{margin:.4rem 0;padding-left:1.25rem}.data-sources-para{margin:.4rem 0}.data-sources-link{color:var(--blue-highlight)}.data-sources-citation{font-style:italic}.toast{z-index:200;background:var(--white);color:var(--black);font-family:var(--font-display);letter-spacing:.06em;border-radius:4px;padding:.5rem 1.25rem;font-size:.8rem;font-weight:800;animation:.2s toast-in;position:fixed;top:1rem;left:50%;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(-.5rem)}to{opacity:1;transform:translate(-50%)translateY(0)}}.mobile-loading{min-height:100dvh;font-family:var(--font-display);color:var(--gray-mid);justify-content:center;align-items:center;font-size:1.2rem;display:flex}.responsive-root--mobile{--overlayTop:4.5rem;flex-direction:column;min-height:100dvh;display:flex}.responsive-root--mobile .mobile-header{z-index:50;text-align:center;background:linear-gradient(#000000fa,#000000f5 60%,#000000eb);padding:.4rem .5rem .35rem;position:sticky;top:0}.responsive-root--mobile .mobile-header-row{justify-content:space-between;align-items:center;gap:.25rem;display:flex}.responsive-root--mobile .mobile-header-left,.responsive-root--mobile .mobile-header-right{flex-shrink:0;align-items:center;gap:.25rem;display:flex}.responsive-root--mobile .mobile-title{letter-spacing:.04em;text-align:center;flex:1;min-width:0;font-size:1.1rem;font-weight:900}.responsive-root--mobile .mobile-header .odds-total{gap:.4rem;padding:.1rem 0 0}.responsive-root--mobile .mobile-header .header-btn{letter-spacing:.04em;padding:.3rem .4rem;font-size:.55rem}.responsive-root--mobile .mobile-header .download-btn{min-width:unset;letter-spacing:.04em;padding:.3rem .4rem;font-size:.55rem}.responsive-root--mobile .mobile-region-title{letter-spacing:.04em;text-align:center;color:var(--white);margin-bottom:.75rem;font-size:1.3rem;font-weight:900}.responsive-root--mobile .mobile-round{margin-bottom:1.25rem}.responsive-root--mobile .mobile-round-label{letter-spacing:.12em;color:var(--gray-lowlight);text-align:center;margin-bottom:.4rem;font-size:.7rem;font-weight:700}.responsive-root--mobile .mobile-round-games{flex-direction:column;gap:.5rem;display:flex}.responsive-root--mobile .mobile-round-region{margin-bottom:1.25rem}.responsive-root--mobile .mobile-round-region-header{letter-spacing:.04em;text-align:center;color:var(--gray-lowlight);margin-bottom:.5rem;font-size:1rem;font-weight:900}.responsive-root--mobile .responsive-root .game{min-width:unset;width:100%}.responsive-root--mobile .responsive-root .game-slot{min-height:2.75rem;padding:.5rem .75rem}.responsive-root--mobile .mobile-final-four{padding:0}.responsive-root--mobile .mobile-champion-display{text-align:center;background:var(--gray-warm);border:2px solid var(--blue-highlight);border-radius:4px;margin-top:.75rem;padding:1rem}.responsive-root--mobile .mobile-exact-odds{text-align:center;border:1px solid var(--gray-border);background:#00000040;border-radius:4px;margin-top:.75rem;padding:.75rem}.responsive-root--mobile .mobile-exact-odds-label{letter-spacing:.12em;color:var(--gray-mid);font-size:.7rem;font-weight:400}.responsive-root--mobile .mobile-exact-odds-value{color:var(--blue-highlight);margin-top:.25rem;font-size:1.1rem;font-weight:900}.responsive-root--mobile .bracket-header--sticky{display:none}@media (height<=480px){.responsive-root--mobile .mobile-header{padding:.2rem .4rem .15rem}.responsive-root--mobile .mobile-header .odds-total{display:none}.responsive-root--mobile .mobile-title{font-size:.9rem}.responsive-root--mobile{--overlayTop:2.5rem}}.overlay-shell{pointer-events:none;z-index:150;position:fixed;inset:0}.overlay-shell *{pointer-events:auto}.overlay-backdrop{background:#0000008c;position:absolute;inset:0}.overlay-nav{border-top:1px solid var(--gray-border);border-left:1px solid var(--gray-border);background:#000000eb;gap:.25rem;display:flex;position:absolute}.overlay-nav-btn{color:var(--gray-mid);font-family:var(--font-display);letter-spacing:.06em;cursor:pointer;background:0 0;border:none;flex:1;min-height:44px;padding:.75rem 0;font-size:1.05rem;font-weight:900}.overlay-nav-btn--toggle{flex:none;width:2.25rem;min-width:2.25rem;padding:0}.overlay-nav-btn--active{color:var(--blue-highlight)}.overlay-panel{border:1px solid var(--gray-border);opacity:0;visibility:hidden;pointer-events:none;background:#000000fa;position:absolute;overflow:hidden;box-shadow:0 20px 60px #000000b3}.overlay-panel-inner{-webkit-overflow-scrolling:touch;width:100%;height:100%;padding:.75rem .75rem 1rem;overflow:auto}.overlay-close{width:100%;font-family:var(--font-display);letter-spacing:.08em;background:var(--white);color:var(--black);cursor:pointer;border:none;margin-bottom:.75rem;padding:.6rem .75rem;font-weight:900;display:block}.overlay-panel-inner .mobile-round-tab{width:100%}.overlay-panel-inner .mobile-round-label{letter-spacing:.12em;color:var(--gray-lowlight);text-align:center;margin-bottom:.4rem;font-size:.7rem;font-weight:700}.overlay-panel-inner .mobile-round-games{flex-direction:column;gap:.5rem;display:flex}.overlay-panel-inner .game{min-width:unset;width:100%}.overlay-panel-inner .game-slot{min-height:2.75rem;padding:.5rem .75rem}.overlay--portrait .overlay-nav{padding:.35rem .35rem calc(.35rem + env(safe-area-inset-bottom));bottom:0;left:0;right:0}.overlay--portrait .overlay-panel{left:0;right:0;bottom:calc(3.9rem + env(safe-area-inset-bottom));height:var(--panelHeightPortrait);transition:transform .18s,opacity .18s,visibility 0s linear .18s;transform:translateY(120%)}.overlay--portrait.overlay--open .overlay-panel{opacity:1;visibility:visible;pointer-events:auto;transition:transform .18s,opacity .18s;transform:translateY(0)}.overlay--landscape .overlay-nav{top:var(--overlayTop);width:var(--navRailWidth);padding:.5rem .25rem calc(.5rem + env(safe-area-inset-bottom));border-top:none;border-left:none;border-right:1px solid var(--gray-border);flex-direction:column;bottom:0;left:0}.overlay--landscape.overlay--nav-hidden .overlay-nav{border-right:none;width:0;padding:0;overflow:hidden}.overlay--landscape.overlay--nav-hidden .overlay-panel,.overlay--landscape.overlay--nav-hidden .overlay-backdrop,.overlay--landscape.overlay--nav-hidden .overlay-nav-btn{display:none}.overlay--landscape.overlay--nav-hidden .overlay-nav-btn--toggle{left:-.5rem;bottom:calc(.75rem + env(safe-area-inset-bottom));border:1px solid var(--gray-border);background:#000000eb;border-left:none;border-radius:0 10px 10px 0;justify-content:center;align-items:center;width:2.75rem;height:3.5rem;display:flex;position:fixed}.overlay--landscape .overlay-nav-btn{padding:.5rem 0}.overlay--landscape .overlay-nav-btn--toggle{margin-top:auto}.overlay--landscape .overlay-panel{top:var(--overlayTop);bottom:0;left:var(--navRailWidth);width:var(--panelWidthLandscape);transition:transform .18s,opacity .18s,visibility 0s linear .18s;transform:translate(-120%)}.overlay--landscape.overlay--open .overlay-panel{opacity:1;visibility:visible;pointer-events:auto;transition:transform .18s,opacity .18s;transform:translate(0)}.responsive-root--desktop .mobile-header{display:none}.responsive-root--desktop .bracket-header--sticky{display:flex}.responsive-root--mobile .mobile-full{-webkit-overflow-scrolling:touch;width:100%;padding:.5rem 0;overflow:auto}
