*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:#fff;color:#212121}.topbar{background:#3f51b5;color:#fff;height:64px;padding:0 16px;box-shadow:0 2px 4px #0003;display:flex;align-items:center;gap:.5rem}.brand{font-size:20px;font-weight:400}.topbar-spacer{flex:1}.icon-btn{width:40px;height:40px;border:none;border-radius:50%;background:transparent;color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}.icon-btn:hover{background:#ffffff1f}.nav-menu{position:relative}.menu-panel{position:absolute;top:44px;left:0;min-width:224px;background:#fff;border-radius:2px;box-shadow:0 2px 8px #0000004d;padding:8px 0;z-index:100}.menu-item{display:flex;align-items:center;gap:16px;width:100%;height:48px;padding:0 16px;border:none;background:none;color:#212121;font:inherit;font-size:15px;text-align:left;cursor:pointer;white-space:nowrap}.menu-item svg{color:#737373}.menu-item:hover{background:#eee}.page{max-width:1280px;margin:0 auto;padding:0 1rem 3rem}.page hr{border:none;border-top:1px solid #e0e0e0;margin:.5rem 0}.loading,.page-note{text-align:center;color:#888;margin-top:3rem}.error-note{text-align:center;color:#ef5350;margin:1rem 0}.subheader{color:#3f51b5;font-size:.875rem;font-weight:500;margin:1rem 0 .25rem;padding:.5rem 1rem}.no-data{font-size:28px;text-align:center;color:#999;font-weight:300}.quarter-nav{display:flex;align-items:center;justify-content:center;gap:1.5rem;padding:10px}.quarter-title{flex:1;text-align:center}.quarter-title h1{margin:10px;font-weight:300;font-size:2.1rem}.quarter-title h1 span{font-weight:100}.quarter-title small{font-weight:300;color:#999}.quarter-nav button{border:none;background:#3f51b5;color:#fff;font-size:1.1rem;width:3rem;height:3rem;border-radius:50%;cursor:pointer;box-shadow:0 2px 5px #00000042;flex-shrink:0}.quarter-nav button:hover:not(:disabled){background:#4a5cc7}.quarter-nav button:disabled{opacity:.35;cursor:default}.summary-info{display:flex;flex-wrap:wrap;justify-content:space-around;padding:.5rem 1rem}.summary-col{text-align:center;padding:.5rem 1rem}.summary-info p{margin:.2rem 0;text-align:center}.summary-info .result{font-size:28px;font-variant-numeric:tabular-nums}.summary-year .result{font-size:24px}.summary-platform .result{font-size:22px}.summary-info .result small{font-size:50%;color:#999}.summary-info .label{color:#666;font-size:.9rem}.summary-platform .label{font-size:12px}.green{color:#42bd41}.red{color:#ef5350}.dark{color:#000}.platforms-row{display:flex;align-items:center;justify-content:center;gap:1rem;padding:1rem;flex-wrap:wrap}.platform{flex:1;min-width:260px;display:flex;flex-direction:column;align-items:center;gap:.5rem}.platform .summary-info{width:100%}.platform-pie{display:flex;flex-direction:column;align-items:center}.pie-headline{margin:.4rem 0 0;font-weight:400;font-size:1.25rem}.bonuses-row{display:flex;justify-content:space-around;flex-wrap:wrap;padding:.5rem 1rem 1rem}.bonus{opacity:.3;text-align:center;padding:.5rem 1.25rem}.bonus.fulfilled{border-bottom:2px solid #5677fc;opacity:1}.bonus p{margin:.3rem 0;font-size:1.3rem}.bonus small{display:block;font-size:60%;color:#999}.bonuses-empty{flex:1;padding:2rem 0}.bottom-cols{display:flex;gap:1rem;align-items:flex-start}.apps-col{flex:45;min-width:0}.year-col{flex:55;min-width:0}.bundles-toggle{display:flex;align-items:center;gap:.4rem;color:#555;cursor:pointer;margin:0 0 .25rem 15px;height:40px}.apps-list{list-style:none;margin:0;padding:0}.apps-list li{display:flex;align-items:center;padding:.15rem .5rem}.face{width:48px;height:48px;border-radius:30px;border:1px solid #ddd;margin:10px 16px;object-fit:cover;flex-shrink:0}.face-fallback{display:flex;align-items:center;justify-content:center;background:#e8eaf6;color:#3f51b5;font-weight:600;font-size:1.2rem}.app-text{min-width:0}.app-text h3{margin:0;font-size:1rem;font-weight:500}.app-text h3 small{color:#999;font-weight:400;font-size:75%}.app-text p{margin:.15rem 0 0;font-size:.85rem;color:#555;font-variant-numeric:tabular-nums}.app-text .numbers{display:block}.app-text small{color:#999;font-size:85%}.year-platforms-head{display:flex;align-items:center;justify-content:center;gap:1.5rem;padding:.75rem}.year-platforms-data{display:flex;justify-content:center;padding:.5rem;font-variant-numeric:tabular-nums}.ypd-col{display:flex;flex-direction:column;gap:.6rem}.ypd-left{align-items:flex-end;text-align:right}.ypd-right{align-items:flex-start;text-align:left}.ypd-mid{width:180px;align-items:center;color:#888;font-size:.85rem}.ypd-col small{display:block;color:#999;font-size:80%}.quarters-list{list-style:none;margin:0;padding:0}.quarters-list li{display:flex;align-items:center;padding:.5rem 0;cursor:pointer}.quarters-list li:hover,.quarters-list li.active{background:#e6e6e659}.q-growth{width:90px;padding:0 16px;font-size:12px;flex-shrink:0}.q-text h3{margin:0;font-size:1rem;font-weight:500}.q-text p{margin:.15rem 0 0;font-size:.85rem;color:#555;font-variant-numeric:tabular-nums}.q-text small{color:#999;font-size:85%}.reports-page{max-width:960px;margin:1.5rem auto 3rem;padding:0 1rem}.reports-header{display:flex;align-items:flex-end;background:#373737;color:#fff;padding:32px 16px 12px;font-weight:500}.reports-list{list-style:none;margin:0;padding:0}.reports-list li{display:flex;align-items:center;padding:6px 16px;border-bottom:1px solid #eee}.reports-list li.not-generated,.reports-list li.not-generated .rl-icon{color:#aaa}.rl-icon{width:10%;min-width:48px;display:flex;justify-content:flex-end;padding-right:16px;color:#3f51b5}.rl-year,.rl-month{width:20%}.rl-actions{flex:1;display:flex;justify-content:flex-end;gap:.25rem}.text-btn{color:#3f51b5;background:none;border:none;font:inherit;font-size:.85rem;font-weight:500;text-transform:uppercase;text-decoration:none;padding:.45rem .7rem;border-radius:4px;cursor:pointer}.text-btn:hover{background:#3f51b514}.raised-btn{display:inline-block;background:#fafafa;color:#212121;border:none;font:inherit;font-size:.85rem;font-weight:500;text-transform:uppercase;text-decoration:none;text-align:center;padding:.5rem 1rem;border-radius:4px;box-shadow:0 1px 3px #0000004d;cursor:pointer}.raised-btn.primary{background:#3f51b5;color:#fff}.raised-btn:disabled{opacity:.6;cursor:default}.report-toolbar{display:flex;align-items:center;gap:1rem;padding:.5rem 0 1rem}.gen-title{margin:0}.html-report{padding:16px 0;overflow-x:auto}.html-report table{min-width:1100px;width:100%;border-collapse:collapse}.html-report th{text-align:right;padding:0 8px 6px;white-space:nowrap}.html-report td{padding:0 8px;text-align:right;font-family:Courier New,monospace;white-space:nowrap}.report-app{display:flex;align-items:center;padding:4px 8px}.report-app:hover{background:#fafafa}.report-app.active{background:#e3f2fd}.ra-name{flex:1;text-align:right;padding-right:8px}.report-app .platform-icon{margin:0 16px;width:32px;display:flex;flex-direction:column;align-items:center}.report-app .platform-icon small{font-size:11px;color:#666}.report-app .app-icon,.report-app .app-icon-placeholder{height:32px;width:32px;border-radius:4px;flex-shrink:0}.app-icon-fallback{display:inline-flex;align-items:center;justify-content:center;background:#e8eaf6;color:#3f51b5;font-weight:600}.report-app input{width:110px;margin-left:24px;padding:.4rem .5rem;font-size:1rem;border:none;border-bottom:1px solid #ccc;background:transparent}.report-app input:focus{outline:none;border-bottom:2px solid #3f51b5}.report-app input:disabled{color:#999;border-bottom-style:dotted}.ra-percent{padding-left:8px;color:#666}.dph-row{margin-top:32px}.gen-submit{display:flex;justify-content:center;padding:32px}.gen-submit .raised-btn{min-width:50%}.login-wrap{display:flex;justify-content:center;margin-top:4rem;padding:0 1rem}.login-card{width:100%;max-width:360px;display:flex;flex-direction:column;gap:.9rem;background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:1.5rem;box-shadow:0 1px 3px #0000001f}.login-card h2{margin:0}.login-card label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;color:#555}.login-card input{font-size:1rem;padding:.55rem .7rem;border:1px solid #ccc;border-radius:6px}.login-card input:focus{outline:2px solid #3f51b5;border-color:transparent}.login-card button{margin-top:.4rem;background:#3f51b5;color:#fff;border:none;border-radius:6px;padding:.6rem;font-size:1rem;cursor:pointer}.login-card button:disabled{opacity:.6}.login-error{color:#ef5350;margin:0;font-size:.9rem}@media(max-width:960px){.bottom-cols,.platforms-row{flex-direction:column}}
