@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Open+Sans:wght@400;500;600;700;800&display=swap";:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;color:#111827;background:#f3f4f6}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:#f3f4f6}button,input,select,textarea{font:inherit}.app-shell{width:min(960px,100%);margin:0 auto;padding:32px 20px}.logo-card{border:3px solid #111827;background:#fff;padding:36px 24px;text-align:center;cursor:pointer;margin-bottom:32px}.logo-card h1{font-size:clamp(2.5rem,8vw,5rem);margin:0;letter-spacing:-.05em}.logo-card p{margin:12px 0 0;color:#4b5563}.home-nav{display:grid;gap:20px;justify-content:center}.nav-button{min-width:260px;border:3px solid #111827;background:#fff;padding:22px 28px;font-size:1.5rem;cursor:pointer}.nav-button:hover,.back-button:hover,.secondary-button:hover{background:#e5e7eb}.page-card{border:3px solid #111827;background:#fff;padding:24px}.back-button{border:2px solid #111827;background:#fff;padding:8px 12px;margin-bottom:16px;cursor:pointer}h2{font-size:2rem;margin:0 0 8px}h3{margin-top:28px}p{line-height:1.6}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-top:20px}label{display:block;font-weight:600}label>input,label>select,label>textarea{display:block;margin-top:6px}input,select,textarea{width:100%;border:2px solid #111827;padding:10px;background:#fff}.required{color:#b91c1c;display:inline;margin-left:2px}.primary-button{border:3px solid #111827;background:#111827;color:#fff;padding:12px 18px;margin-top:24px;cursor:pointer;font-weight:700}.primary-button:disabled{opacity:.45;cursor:not-allowed}.secondary-button{border:3px solid #111827;background:#fff;color:#111827;padding:12px 18px;margin-top:20px;cursor:pointer;font-weight:700}.secondary-button:disabled{opacity:.45;cursor:not-allowed}.helper-text{color:#6b7280;margin-top:10px}.error-text{color:#b91c1c;font-weight:700}.success-text{color:#047857;font-weight:700}.session-summary{border:2px solid #111827;padding:16px;margin:20px 0;background:#f9fafb}.session-summary p{margin:4px 0}.event-summary-card{border:2px solid #111827;padding:16px;margin-top:20px;background:#f9fafb}.event-summary-card h3{margin-top:0}.event-summary-card p{margin:4px 0}.bowler-order-card{border:2px solid #111827;padding:18px;margin-top:24px;background:#f9fafb}.bowler-order-card h3{margin-top:0}.baker-rotation-card{border:2px solid #111827;background:#fff;padding:14px;margin:16px 0}.baker-rotation-card h4{margin:0 0 10px}.baker-rotation-list{display:grid;gap:6px}.baker-rotation-list p{margin:0}.frame-card{border:2px solid #111827;padding:18px;background:#fff}.current-frame-card{margin-top:24px}.frame-header{display:flex;justify-content:space-between;gap:20px;border-bottom:2px solid #111827;padding-bottom:14px;margin-bottom:14px}.frame-header h3{margin:0;font-size:1.8rem}.eyebrow{margin:0 0 4px;color:#6b7280;font-size:.85rem;text-transform:uppercase;letter-spacing:.08em}.progress-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px;color:#374151;font-weight:700}.progress-row span{border:2px solid #111827;padding:6px 10px;background:#f9fafb}.pin-entry-layout{display:grid;grid-template-columns:minmax(280px,380px) 1fr;gap:28px;align-items:start;margin-top:24px}.shot-decks{display:grid;gap:18px}.second-shot-card{border-top:2px dashed #111827;padding-top:18px}.pin-deck{position:relative;width:100%;max-width:380px;aspect-ratio:1 / .95;border:3px solid #111827;background:#f9fafb;margin-top:12px;overflow:hidden}.pin-button{position:absolute;transform:translate(-50%,-50%);width:52px;height:52px;border:3px solid #111827;border-radius:999px;background:#fff;color:#111827;font-weight:800;cursor:pointer}.pin-button.knocked{background:#111827;color:#fff}.pin-button.unavailable{visibility:hidden;pointer-events:none}.pin-button:hover{transform:translate(-50%,-50%) scale(1.08)}.pin-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.pin-actions .secondary-button{margin-top:0}.shot-summary{border:2px solid #111827;background:#fff;padding:12px;margin-top:12px}.shot-summary p{margin:4px 0}.compact-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.frame-edit-warning-text{border:2px solid #111827;background:#fff7ed;padding:12px;margin-top:18px}.frame-navigation{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.post-game-actions{border-top:2px solid #111827;margin-top:24px;padding-top:20px}.post-game-actions h3{margin-top:0}.post-game-buttons{display:flex;flex-wrap:wrap;gap:12px}.post-game-buttons .primary-button,.post-game-buttons .secondary-button{margin-top:0}.next-game-card{border:2px solid #111827;background:#f9fafb;padding:16px;margin-top:18px}.next-game-card .primary-button{margin-top:16px}.completed-games-card{border:2px solid #111827;background:#fff;padding:14px;margin:16px 0}.completed-games-card h4{margin:0 0 12px}.completed-game-row{display:grid;grid-template-columns:minmax(120px,180px) 1fr;gap:16px;border-top:2px solid #111827;padding-top:12px;margin-top:12px}.completed-game-row:first-of-type{border-top:0;padding-top:0;margin-top:0}.completed-game-row p{margin:4px 0}.score-list{display:flex;flex-wrap:wrap;gap:12px}.bowler-form-card,.bowler-card,.add-ball-card{border:2px solid #111827;background:#f9fafb;padding:16px;margin-top:20px}.bowler-form-card h3,.bowler-card h3,.add-ball-card h4{margin-top:0}.bowler-list{display:grid;gap:20px;margin-top:24px}.card-header{display:flex;justify-content:space-between;gap:16px;align-items:start;border-bottom:2px solid #111827;padding-bottom:12px;margin-bottom:16px}.card-header h3{margin:0}.card-header p{margin:4px 0 0;color:#6b7280}.danger-button{border:3px solid #991b1b;background:#fff;color:#991b1b;padding:10px 14px;cursor:pointer;font-weight:700}.danger-button:hover{background:#fee2e2}.small-button{padding:6px 10px;font-size:.9rem}.arsenal-section{margin-top:20px}.arsenal-section h4{margin-bottom:10px}.arsenal-list{display:grid;gap:10px;margin-bottom:16px}.ball-card{border:2px solid #111827;background:#fff;padding:12px;display:flex;justify-content:space-between;gap:12px;align-items:start}.ball-card p{margin:4px 0;color:#4b5563}.bowler-summary,.add-ball-summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:16px;align-items:center}.bowler-summary::-webkit-details-marker,.add-ball-summary::-webkit-details-marker{display:none}.bowler-summary:after,.add-ball-summary:after{content:"+";border:2px solid #111827;width:28px;height:28px;display:grid;place-items:center;font-weight:800;flex:0 0 auto}.bowler-card[open]>.bowler-summary:after,.add-ball-card[open]>.add-ball-summary:after{content:"−"}.bowler-summary strong{font-size:1.25rem}.bowler-summary p{margin:4px 0 0;color:#6b7280}.summary-hint{color:#6b7280;font-size:.9rem;margin-left:auto}.bowler-details-content{border-top:2px solid #111827;margin-top:16px;padding-top:16px}.add-ball-content{border-top:2px solid #111827;margin-top:14px;padding-top:14px}@media(max-width:800px){.pin-entry-layout{grid-template-columns:1fr}}@media(max-width:700px){.card-header,.ball-card{display:grid}}@media(max-width:600px){.app-shell{padding:20px 12px}.nav-button{width:100%;min-width:0}.frame-header{display:grid}}.bowler-actions-row{display:flex;justify-content:flex-end;gap:12px;border-bottom:2px solid #111827;padding-bottom:12px;margin-bottom:16px}.center-form-card,.center-card,.lane-preview-card{border:2px solid #111827;background:#f9fafb;padding:16px;margin-top:20px}.center-form-card h3,.center-card h3,.lane-preview-card h4{margin-top:0}.center-list{display:grid;gap:20px;margin-top:24px}.center-summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:16px;align-items:center}.center-summary::-webkit-details-marker{display:none}.center-summary:after{content:"+";border:2px solid #111827;width:28px;height:28px;display:grid;place-items:center;font-weight:800;flex:0 0 auto}.center-card[open]>.center-summary:after{content:"−"}.center-summary strong{font-size:1.25rem}.center-summary p{margin:4px 0 0;color:#6b7280}.center-details-content{border-top:2px solid #111827;margin-top:16px;padding-top:16px}.center-actions-row{display:flex;justify-content:flex-end;gap:12px;border-bottom:2px solid #111827;padding-bottom:12px;margin-bottom:16px}.lane-preview-card{background:#fff}.lane-preview-card p{margin:4px 0}.pattern-form-card,.pattern-card,.resource-link{border:2px solid #111827;background:#f9fafb;padding:12px 14px;margin:16px 0 0;font-weight:700}.resource-link a{color:#111827;text-decoration:underline}.pattern-preview-card{border:2px solid #111827;background:#f9fafb;padding:16px;margin-top:20px}.pattern-form-card h3,.pattern-card h3,.pattern-preview-card h4{margin-top:0}.pattern-list{display:grid;gap:20px;margin-top:24px}.pattern-summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:16px;align-items:center}.pattern-summary::-webkit-details-marker{display:none}.pattern-summary:after{content:"+";border:2px solid #111827;width:28px;height:28px;display:grid;place-items:center;font-weight:800;flex:0 0 auto}.pattern-card[open]>.pattern-summary:after{content:"−"}.pattern-summary strong{font-size:1.25rem}.pattern-summary p{margin:4px 0 0;color:#6b7280}.pattern-details-content{border-top:2px solid #111827;margin-top:16px;padding-top:16px}.pattern-actions-row{display:flex;justify-content:flex-end;gap:12px;border-bottom:2px solid #111827;padding-bottom:12px;margin-bottom:16px}.pattern-preview-card{background:#fff}.pattern-preview-card p{margin:4px 0}.save-button{border:3px solid #047857;background:#fff;color:#047857;padding:10px 14px;cursor:pointer;font-weight:700}.save-button:hover{background:#d1fae5}.unsaved-text{color:#b45309!important;font-weight:700}.event-form-card,.event-card,.event-link-hint{color:#047857!important;font-weight:700}.event-resource-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin-top:14px}.event-resource-links a{border:2px solid #111827;background:#f9fafb;color:#111827;padding:12px 14px;text-align:center;font-weight:700;text-decoration:none}.event-resource-links a:hover{background:#e5e7eb}.event-preview-card{border:2px solid #111827;background:#f9fafb;padding:16px;margin-top:20px}.event-form-card h3,.event-card h3,.event-preview-card h4{margin-top:0}.event-list{display:grid;gap:20px;margin-top:24px}.event-summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:16px;align-items:center}.event-summary::-webkit-details-marker{display:none}.event-summary:after{content:"+";border:2px solid #111827;width:28px;height:28px;display:grid;place-items:center;font-weight:800;flex:0 0 auto}.event-card[open]>.event-summary:after{content:"−"}.event-summary strong{font-size:1.25rem}.event-summary p{margin:4px 0 0;color:#6b7280}.event-details-content{border-top:2px solid #111827;margin-top:16px;padding-top:16px}.event-actions-row{display:flex;justify-content:flex-end;gap:12px;border-bottom:2px solid #111827;padding-bottom:12px;margin-bottom:16px}.event-preview-card{background:#fff}.event-preview-card p{margin:4px 0}.empty-state-card,.stats-filter-card,.stats-table-card,.saved-game-card{border:2px solid #111827;background:#f9fafb;padding:16px;margin-top:20px}.empty-state-card h3,.stats-filter-card h3,.stats-table-card h3,.saved-game-card h4{margin-top:0}.stats-action-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}.stats-action-row .secondary-button,.stats-action-row .primary-button{margin-top:0}.stats-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-top:20px}.stat-card{border:2px solid #111827;background:#fff;padding:16px;display:grid;gap:4px}.stat-card strong{font-size:2rem}.stat-card span{color:#6b7280;font-weight:700}.table-scroll{overflow-x:auto}.stats-table{width:100%;border-collapse:collapse;background:#fff}.stats-table th,.stats-table td{border:2px solid #111827;padding:10px;text-align:left}.stats-table th{background:#f3f4f6}.saved-games-list{display:grid;gap:16px;margin-top:24px}.saved-game-card{display:flex;justify-content:space-between;gap:16px;align-items:start}.saved-game-card p{margin:4px 0}@media(max-width:700px){.saved-game-card{display:grid}}.deep-stats-card,.ball-stats-card,.transition-card,.saved-set-card{border:2px solid #111827;background:#f9fafb;padding:16px;margin-top:20px}.frame-editor-overlay{position:fixed;inset:0;background:#111827ad;padding:28px;z-index:1000;overflow-y:auto}.frame-editor-modal{width:min(1040px,100%);margin:0 auto;border:3px solid #111827;background:#fff;padding:24px}.frame-editor-header{display:flex;justify-content:space-between;gap:20px;border-bottom:2px solid #111827;padding-bottom:16px;margin-bottom:18px}.frame-editor-header h3{margin-top:0}.frame-editor-progress{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.active-frame-button{background:#111827;color:#fff}.frame-editor-pin-layout{margin-top:18px}.frame-editor-score-preview{border:2px solid #111827;background:#f9fafb;padding:14px;margin-top:18px}.frame-editor-score-preview>strong{display:block;margin-bottom:8px}@media(max-width:700px){.frame-editor-overlay{padding:12px}.frame-editor-header{display:block}}.game-notes-card{border:2px solid #111827;background:#f9fafb;padding:18px;margin-top:16px}.game-notes-card h4{margin:0 0 8px}.game-notes-card p{margin-top:0}.game-notes-form{margin-top:16px}.game-score-card>strong{display:block;margin-bottom:6px}.game-score-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-top:12px}.frame-ball-card>strong{display:block;margin-bottom:6px}.frame-ball-table select{min-width:180px}.saved-game-notes-field{margin-top:14px}.saved-game-notes-field textarea{margin-top:6px}.saved-game-actions-row{margin-top:14px}.set-metadata-card{border:2px solid #111827;background:#f9fafb;padding:18px;margin-top:18px;margin-bottom:18px}.set-metadata-header h4{margin:0 0 8px}.set-metadata-header p{margin:0}.set-metadata-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px 16px;margin:16px 0}.set-metadata-grid p{margin:0}.set-metadata-form{margin-top:16px}.metadata-game-lane-card{border:2px solid #111827;background:#fff;padding:14px}.metadata-game-lane-card>strong{display:block;margin-bottom:6px}.metadata-game-lane-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-top:12px}.full-width-field{grid-column:1 / -1}.saved-set-top-actions,.saved-set-actions-row,.saved-game-actions-row,.data-button-row,.setup-button-row,.frame-navigation{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:stretch;gap:10px}.saved-set-top-actions>button,.saved-set-actions-row>button,.saved-game-actions-row>button,.data-button-row>button,.data-card>.import-button,.setup-button-row>button,.frame-navigation>button{width:100%;min-height:52px;margin-top:0;display:inline-flex;align-items:center;justify-content:center;text-align:center}.saved-game-collapsible-card{padding:0;overflow:hidden}.saved-game-summary{cursor:pointer;padding:16px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;list-style:none}.saved-game-summary::-webkit-details-marker{display:none}.saved-game-summary:after{content:"+";border:2px solid #111827;width:28px;height:28px;display:inline-grid;place-items:center;font-weight:800}.saved-game-collapsible-card[open] .saved-game-summary:after{content:"–"}.saved-game-summary div:first-child{display:grid;gap:4px}.saved-game-summary-meta{display:flex;align-items:center;gap:10px;color:#6b7280;font-size:.9rem}.saved-game-detail-content{border-top:2px solid #111827;padding:16px}@media(max-width:700px){.saved-game-summary{grid-template-columns:1fr}.saved-game-summary-meta{display:grid}}.saved-set-top-actions{margin-bottom:18px}.saved-set-content-divider{border-top:2px solid #111827;margin:18px 0}.saved-game-detail-card{border:2px solid #111827;background:#f9fafb;padding:16px;margin-top:20px}.deep-stats-card h3,.ball-stats-card h4,.transition-card h4,.saved-game-detail-card h4{margin-top:0}.deep-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-top:16px}.saved-sets-list{display:grid;gap:16px;margin-top:24px}.saved-set-summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:16px;align-items:center}.saved-set-summary::-webkit-details-marker{display:none}.saved-set-summary:after{content:"+";border:2px solid #111827;width:28px;height:28px;display:grid;place-items:center;font-weight:800;flex:0 0 auto}.saved-set-card[open]>.saved-set-summary:after{content:"−"}.saved-set-summary strong{font-size:1.25rem}.saved-set-summary p{margin:4px 0 0;color:#6b7280}.saved-set-details{border-top:2px solid #111827;margin-top:16px;padding-top:16px}.saved-set-actions-row{display:flex;justify-content:flex-end;margin-bottom:16px}.saved-game-detail-card{background:#fff}.saved-game-detail-card p{margin:4px 0}.score-grid-card,.set-specific-stats-card{border:2px solid #111827;background:#fff;padding:12px;margin-top:18px}.score-grid-card h4,.set-specific-stats-card h4{margin:0 0 10px}.score-grid{display:grid;grid-template-columns:repeat(10,minmax(76px,1fr));overflow-x:auto;border-top:2px solid #111827;border-left:2px solid #111827}.score-frame{min-width:76px;border-right:2px solid #111827;border-bottom:2px solid #111827;display:grid;grid-template-rows:auto 36px 42px;background:#eaf6ff}.score-frame-number{text-align:center;font-weight:800;border-bottom:1px solid #111827;padding:4px;background:#cfe8ff}.score-rolls{display:grid;grid-template-columns:1fr 1fr;min-height:36px}.score-rolls span{display:grid;place-items:center;font-weight:800;border-left:1px solid #111827}.score-rolls span:first-child{border-left:0}.tenth-frame-rolls{grid-template-columns:1fr 1fr 1fr}.score-total{display:grid;place-items:center;font-size:1.1rem;font-weight:900;border-top:2px solid #111827;background:#f7fbff}@media(max-width:900px){.score-grid{grid-template-columns:repeat(10,86px)}}.score-rolls{background:#eef7ff}.score-rolls span{min-height:36px}.split-score-mark{position:relative;z-index:1}.split-score-mark:after{content:"";position:absolute;width:1.55em;height:1.55em;border:2px solid #111827;border-radius:999px;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none}.spare-leave-card{border:2px solid #111827;background:#f9fafb;padding:16px;margin-top:20px}.spare-leave-card h3{margin-top:0}.board-analysis-card{border:2px solid #111827;background:#f9fafb;padding:16px;margin-top:20px}.board-analysis-card h3{margin-top:0}.board-table-section{margin-top:20px}.board-table-section h4{margin-bottom:10px}.board-analysis-card .stats-summary-grid{margin-bottom:8px}.add-form-card{background:#f9fafb}.add-form-summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:16px;align-items:center}.add-form-summary::-webkit-details-marker{display:none}.add-form-summary:after{content:"+";border:2px solid #111827;width:28px;height:28px;display:grid;place-items:center;font-weight:800;flex:0 0 auto}.add-form-card[open]>.add-form-summary:after{content:"−"}.add-form-summary strong{font-size:1.25rem}.add-form-content{border-top:2px solid #111827;margin-top:16px;padding-top:16px}.stats-collapsible-card{border:2px solid #111827;background:#f9fafb;padding:16px;margin-top:20px}.stats-section-summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:16px;align-items:center}.stats-section-summary::-webkit-details-marker{display:none}.stats-section-summary:after{content:"+";border:2px solid #111827;width:28px;height:28px;display:grid;place-items:center;font-weight:800;flex:0 0 auto}.stats-collapsible-card[open]>.stats-section-summary:after{content:"−"}.stats-section-summary strong{font-size:1.25rem}.stats-section-summary p{margin:4px 0 0;color:#6b7280}.stats-collapsible-content{border-top:2px solid #111827;margin-top:16px;padding-top:16px}.stats-collapsible-content.stats-summary-grid{display:grid}.inner-stats-card{background:#fff}.baker-breakdown-card,.baker-frame-card{border:2px solid #111827;background:#fff;padding:16px;margin-top:20px}.baker-breakdown-card h4,.baker-frame-card h4{margin-top:0}.baker-stats-card{border:2px solid #111827;background:#f9fafb;padding:16px;margin-top:20px}.checkbox-label{display:flex;align-items:center;gap:10px;min-height:48px;margin-top:25px;font-weight:700}.checkbox-label input{width:auto;min-height:auto;transform:scale(1.2)}.stats-collapsible-card{background:#f9fafb}.stats-section-summary{background:#e5e7eb;border:2px solid #111827;padding:14px 16px;margin:-2px;transition:background .15s ease,transform .15s ease}.stats-section-summary:hover{background:#d1d5db}.stats-collapsible-card[open]>.stats-section-summary{background:#d1d5db}.stats-section-summary .summary-hint{background:#f3f4f6;border:2px solid #111827;color:#111827;padding:8px 12px;font-weight:800}.stats-section-summary:after{background:#f3f4f6}.stats-collapsible-content{margin-top:18px}.stats-collapsible-card:not(.stats-filter-card)>.stats-section-summary{background:transparent;border:0;padding:0;margin:0;transition:none}.stats-collapsible-card:not(.stats-filter-card)>.stats-section-summary:hover,.stats-collapsible-card:not(.stats-filter-card)[open]>.stats-section-summary{background:transparent}.stats-collapsible-card:not(.stats-filter-card)>.stats-section-summary .summary-hint{background:transparent;border:0;color:#6b7280;padding:0;font-weight:600}.add-form-summary{background:#e5e7eb;border:2px solid #111827;padding:14px 16px;margin:-2px;transition:background .15s ease}.add-form-summary:hover{background:#d1d5db}.add-form-card[open]>.add-form-summary{background:#d1d5db}.add-form-summary .summary-hint{background:#f3f4f6;border:2px solid #111827;color:#111827;padding:8px 12px;font-weight:800}.add-form-summary:after{background:#f3f4f6}.team-set-card{border:2px solid #111827;background:#f9fafb;padding:16px;margin-top:20px}.overview-default-note{grid-column:1 / -1;margin:4px 0 0}.mini-pin-deck{position:relative;width:104px;height:88px;border:2px solid #111827;background:#f9fafb}.mini-pin{position:absolute;width:20px;height:20px;display:grid;place-items:center;border:2px solid #111827;border-radius:999px;background:#fff;color:#6b7280;font-size:.7rem;font-weight:800;transform:translate(-50%,-50%)}.mini-pin.standing{background:#111827;color:#fff}.spare-summary-grid{margin-bottom:16px}.frame-score-card,.average-game-card{border:2px solid #111827;background:#fff;padding:16px;margin-top:20px}.frame-score-card h4,.average-game-card h4{margin-top:0}.frame-score-chart{display:grid;gap:10px}.frame-score-bar-row{display:grid;grid-template-columns:90px 1fr 56px;gap:12px;align-items:center}.frame-score-label{font-weight:800}.frame-score-track{height:22px;border:2px solid #111827;background:#e5e7eb;overflow:hidden}.frame-score-bar{height:100%;background:#cfe8ff;border-right:2px solid #111827}.score-distribution-card{border:2px solid #111827;background:#fff;padding:16px;margin-top:20px}.score-distribution-card h4{margin-top:0}.score-distribution-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(260px,1fr);gap:20px}.score-distribution-grid h5{margin:0 0 10px;font-size:1rem}.distribution-table td,.distribution-table th{text-align:center}.distribution-table td:first-child,.distribution-table th:first-child{text-align:left}@media(max-width:900px){.score-distribution-grid{grid-template-columns:1fr}}.leave-pin-list{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-width:90px}.leave-pin{width:28px;height:28px;display:grid;place-items:center;border:2px solid #111827;border-radius:999px;background:#111827;color:#fff;font-size:.8rem;font-weight:800}.leave-only-deck{background:#f9fafb}.leave-only-deck .mini-pin{background:#111827;color:#fff}.helper-text a{color:#111827;font-weight:800;text-decoration:underline}.setup-card{border:3px solid #111827;background:#fff;padding:28px;max-width:720px;margin:0 auto}.setup-card h2{margin-top:0}.setup-button-row{margin-top:20px}.data-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:24px 0}.data-card{border:2px solid #111827;background:#f9fafb;padding:18px;margin-top:16px;display:grid;gap:16px}.data-card h3{margin:0 0 8px}.data-card p{margin:0}.import-button{border:2px solid #111827;background:#fff;padding:12px 18px;font-weight:700;cursor:pointer;text-align:center;width:100%;min-height:52px;display:inline-flex;align-items:center;justify-content:center}.import-button:hover{background:#e5e7eb}.import-button input{display:none}.close-app-button{background:#111827;color:#fff}.close-app-button:hover{background:#374151}.frame-editor-sticky-bar{position:sticky;top:0;z-index:5;background:#fff;border-bottom:2px solid #111827;padding-bottom:16px;margin-bottom:18px}.frame-editor-status-grid{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr)) minmax(220px,2fr);gap:10px;margin-bottom:14px}.mini-stat-card{border:2px solid #111827;background:#f9fafb;padding:10px;display:grid;gap:4px}.mini-stat-card span{color:#6b7280;font-weight:700;font-size:.85rem}.mini-stat-card strong{overflow-wrap:anywhere}.frame-editor-pin-layout{grid-template-columns:minmax(380px,1fr) minmax(280px,360px);align-items:start}.frame-editor-side-panel{display:grid;gap:14px;position:sticky;top:190px}.shot-summary h4{margin:0 0 10px}.frame-editor-score-preview .score-list p{margin:4px 0}.saved-game-summary strong,.saved-game-summary span{overflow-wrap:anywhere}@media(max-width:760px){.app-shell{width:100%;padding:14px 8px}.logo-card,.page-card,.setup-card{border-width:2px;padding:16px}.logo-card{margin-bottom:18px}.logo-card h1{font-size:clamp(2.25rem,14vw,4rem)}.logo-card p{font-size:.95rem}.home-nav{gap:12px}.nav-button{width:100%;min-width:0;padding:16px 18px;font-size:1.15rem}.back-button{width:100%}.form-grid,.compact-grid,.set-metadata-grid,.metadata-game-lane-list,.game-score-grid,.deep-stats-grid,.data-summary-grid,.stats-summary-grid{grid-template-columns:1fr}.saved-set-summary,.center-summary,.bowler-summary,.add-ball-summary{align-items:start}.saved-set-top-actions,.saved-set-actions-row,.saved-game-actions-row,.data-button-row,.setup-button-row,.frame-navigation,.post-game-buttons,.pin-actions{grid-template-columns:1fr}.saved-game-summary{grid-template-columns:minmax(0,1fr) 34px;gap:10px;padding:14px}.saved-game-summary-meta{display:grid;gap:4px;align-items:start;font-size:.85rem}.saved-game-detail-content,.saved-set-details,.set-metadata-card,.game-notes-card{padding:14px}.score-grid{grid-template-columns:repeat(10,minmax(68px,1fr))}.score-frame{min-width:68px}.table-scroll,.score-grid{-webkit-overflow-scrolling:touch}}@media(max-width:760px){.frame-editor-overlay{padding:8px}.frame-editor-modal{width:100%;max-height:calc(100dvh - 16px);overflow-y:auto;border-width:2px;padding:14px}.frame-editor-header{display:grid;gap:12px}.frame-editor-header .secondary-button{width:100%;margin-top:0}.frame-editor-progress{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.frame-editor-progress .small-button{min-width:0;padding:8px 4px}.frame-editor-modal .form-grid{grid-template-columns:1fr}.frame-editor-pin-layout,.pin-entry-layout{grid-template-columns:1fr;gap:16px}.pin-deck{max-width:340px;margin-inline:auto}.pin-button{width:44px;height:44px;border-width:2px}.shot-summary,.frame-editor-score-preview,.frame-edit-warning-text{font-size:.95rem}}@media(max-width:420px){.pin-deck{max-width:300px}.pin-button{width:38px;height:38px;font-size:.85rem}.frame-editor-progress{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:760px){.frame-editor-sticky-bar{position:static}.frame-editor-status-grid{grid-template-columns:1fr}.frame-editor-side-panel{position:static}.wide-mini-stat-card{grid-column:auto}}:root{--ps-accent-blue: #1e3a8a;--ps-accent-blue-hover: #eff6ff;--ps-accent-blue-soft: #dbeafe;--ps-subtle-line: #d1d5db}.bowler-form-card,.center-form-card,.pattern-form-card,.event-form-card,.add-form-card{border:2px solid #111827;background:#f9fafb;padding:16px;margin-top:20px;color:#111827}.add-form-summary strong,.stats-section-summary strong{color:var(--ps-accent-blue)}.bowler-list,.center-list,.pattern-list,.event-list{display:grid;gap:8px;margin-top:24px}.bowler-card,.center-card,.pattern-card,.event-card{border:0;border-bottom:1px solid var(--ps-subtle-line);background:transparent;padding:0;margin:0;color:#111827}.bowler-card[open],.center-card[open],.pattern-card[open],.event-card[open]{border:2px solid #111827;background:#fff;padding:16px;margin:12px 0}.bowler-summary,.center-summary,.pattern-summary,.event-summary{padding:14px 0;transition:background .15s ease,padding .15s ease}.bowler-summary:hover,.center-summary:hover,.pattern-summary:hover,.event-summary:hover{background:var(--ps-accent-blue-hover);padding-left:12px;padding-right:12px}.bowler-card[open]>.bowler-summary,.center-card[open]>.center-summary,.pattern-card[open]>.pattern-summary,.event-card[open]>.event-summary{border-bottom:2px solid #111827;margin-bottom:16px;padding:0 0 14px}.bowler-card[open]>.bowler-summary:hover,.center-card[open]>.center-summary:hover,.pattern-card[open]>.pattern-summary:hover,.event-card[open]>.event-summary:hover{background:transparent;padding-left:0;padding-right:0}.bowler-summary strong,.center-summary strong,.pattern-summary strong,.event-summary strong,.saved-set-summary strong{color:var(--ps-accent-blue);font-weight:800}.bowler-summary p,.center-summary p,.pattern-summary p,.event-summary p{color:#4b5563;font-weight:700}.bowler-details-content,.center-details-content,.pattern-details-content,.event-details-content{border-top:0;margin-top:0;padding-top:0}.save-button{border-color:var(--ps-accent-blue);color:var(--ps-accent-blue)}.save-button:hover{background:var(--ps-accent-blue-soft)}.event-link-hint{color:var(--ps-accent-blue)!important}.resource-link a,.event-resource-links a{color:var(--ps-accent-blue)}.event-resource-links a:hover{background:var(--ps-accent-blue-hover)}@media(max-width:700px){.bowler-summary,.center-summary,.pattern-summary,.event-summary{align-items:start}}.event-details-content,.event-details-content label,.event-details-content input,.event-details-content select,.event-details-content textarea,.event-preview-card,.event-preview-card h4,.event-preview-card p,.event-preview-card strong{color:#111827!important}.event-resource-links a{color:#1e3a8a!important}.save-button{border-color:#047857!important;color:#047857!important;background:#fff}.save-button:hover{background:#d1fae5!important}.save-button:disabled{opacity:.45;cursor:not-allowed}.stats-collapsible-card,.stats-collapsible-content,.saved-sets-list,.saved-set-card,.saved-set-details,.saved-game-detail-card,.saved-game-detail-content,.score-grid-card,.set-specific-stats-card{max-width:100%;min-width:0}.stats-collapsible-card{overflow:hidden}.stats-section-summary{margin:0;width:100%}.stats-collapsible-content{overflow-x:hidden}.saved-set-card,.saved-game-detail-card{overflow:hidden}.saved-set-details,.saved-game-detail-content{overflow-x:auto}.score-grid-card,.set-specific-stats-card,.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.score-grid{width:max-content;min-width:100%;max-width:none}.saved-set-top-actions,.saved-game-actions-row{min-width:0}.stats-collapsible-card[open]{padding:14px}.stats-collapsible-card[open]>.stats-section-summary{box-sizing:border-box;margin:0;width:100%}.stats-collapsible-card[open]>.stats-collapsible-content{padding-top:14px;overflow:hidden}.saved-sets-list{gap:12px}.saved-set-card{width:100%;box-sizing:border-box}.saved-set-card[open]{padding:14px}.saved-set-summary,.saved-game-summary{min-width:0}.saved-set-summary>div,.saved-game-summary>div{min-width:0}.saved-set-details{padding-top:14px;overflow:hidden}.saved-set-top-actions,.saved-game-actions-row{grid-template-columns:repeat(2,minmax(0,1fr))}.saved-game-actions-row{grid-template-columns:repeat(3,minmax(0,1fr))}.saved-set-top-actions>button,.saved-game-actions-row>button{min-width:0}.saved-game-detail-card{width:100%;box-sizing:border-box;padding:14px;margin-top:14px}.saved-game-detail-content{padding:14px;overflow:hidden}.score-grid-card{padding:12px;overflow-x:auto}.score-grid{width:100%;min-width:0;grid-template-columns:repeat(10,minmax(58px,1fr))}.score-frame{min-width:58px}.score-rolls span{min-width:0}.score-frame-number,.score-total{font-size:.95rem}.saved-game-summary-meta{min-width:0;text-align:right}@media(max-width:950px){.page-card{padding:18px}.stats-collapsible-card[open],.saved-set-card[open],.saved-game-detail-card,.saved-game-detail-content{padding:12px}.score-grid{grid-template-columns:repeat(10,minmax(54px,1fr))}.score-frame{min-width:54px}}.stats-action-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));align-items:stretch}.stats-action-row .primary-button,.stats-action-row .secondary-button{width:100%;min-height:52px;margin-top:0}.export-modal-overlay{position:fixed;inset:0;background:#111827ad;z-index:1000;padding:28px;overflow-y:auto}.export-modal-card{width:min(900px,100%);margin:0 auto;border:3px solid #111827;background:#fff;padding:24px}.export-modal-header{display:flex;justify-content:space-between;gap:18px;border-bottom:2px solid #111827;padding-bottom:16px;margin-bottom:18px}.export-modal-header h3{margin:0}.export-modal-header p{margin-bottom:0}.export-scope-card{border:2px solid #111827;background:#f9fafb;padding:12px}.export-scope-card p{margin:4px 0 0;color:#4b5563}.export-preset-row,.export-modal-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:18px}.export-preset-row button,.export-modal-actions button{width:100%;min-height:52px;margin-top:0}.export-section-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:18px}.export-section-option{border:2px solid #111827;background:#f9fafb;padding:12px;display:flex;gap:10px;align-items:flex-start}.export-section-option input{width:auto;margin-top:4px;flex:0 0 auto}.export-section-option span{display:grid;gap:4px}.export-section-option small{color:#4b5563;font-weight:500;line-height:1.4}@media(max-width:700px){.export-modal-overlay{padding:12px}.export-modal-card{padding:16px}.export-modal-header{display:grid}}.toast-message{border:2px solid #111827;background:#ecfdf5;color:#064e3b;padding:12px 14px;margin:16px 0;display:flex;justify-content:space-between;align-items:center;gap:12px;font-weight:700}.toast-message button{border:2px solid #111827;background:#fff;color:#111827;width:32px;height:32px;font-weight:900;cursor:pointer}.empty-state-card{border:2px dashed #6b7280;background:#f9fafb;padding:18px;margin-top:16px}.empty-state-card h3{margin:0 0 8px;color:#1e3a8a}.empty-state-card p{margin:0;color:#4b5563}.structured-notes-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-top:14px}.saved-notes-summary{border:2px solid #111827;background:#f9fafb;padding:12px;margin-top:12px}.saved-notes-summary p{margin:6px 0}.export-file-preview{border:2px solid #111827;background:#f9fafb;padding:12px;margin-top:16px;display:grid;gap:6px}.export-file-preview code{display:block;background:#fff;border:1px solid #111827;padding:8px;overflow-wrap:anywhere;font-family:Courier New,monospace}.export-file-preview p{margin:0;color:#4b5563}.about-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-top:18px}.about-card{border:2px solid #111827;background:#f9fafb;padding:16px;margin-top:16px}.about-card h3{margin-top:0;color:#1e3a8a}.about-card p{margin-bottom:0}.about-card a{color:#1e3a8a;font-weight:800;text-decoration:underline}.simple-about-grid{width:100%;max-width:none;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}.simple-about-grid .about-card{margin-top:0;min-height:100px}@media(max-width:700px){.simple-about-grid{grid-template-columns:1fr}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible,[tabindex="-1"]:focus-visible{outline:4px solid #2563eb;outline-offset:3px}[aria-invalid=true]{border-color:#b91c1c;box-shadow:0 0 0 2px #b91c1c26}.field-validation-card{border:2px solid #92400e;background:#fffbeb;color:#111827;padding:14px;margin-top:18px}.field-validation-card h3{margin:0 0 8px;color:#92400e}.field-validation-card ul{margin:0;padding-left:22px}.error-validation-card{border-color:#b91c1c;background:#fef2f2}.error-validation-card h3{color:#b91c1c}.export-modal-card:focus,.frame-editor-modal:focus{outline:none}.field-error-text{display:block;color:#b91c1c;font-weight:700;font-size:.9rem;margin-top:6px;line-height:1.4}.frame-editor-overlay{overflow:hidden}.frame-editor-modal{max-height:calc(100dvh - 56px);overflow-y:auto;overflow-x:hidden;position:relative;box-sizing:border-box}.frame-editor-sticky-bar{margin:-24px -24px 18px;padding:24px 24px 16px;background:#fff;border-bottom:2px solid #111827;z-index:20}.frame-editor-modal>.form-grid.compact-grid{margin-top:0}@media(max-width:760px){.frame-editor-sticky-bar{margin:-14px -14px 18px;padding:14px 14px 16px}}.event-form-card .form-grid label,.event-form-card .form-grid input,.event-form-card .form-grid select,.event-form-card .form-grid textarea,.event-form-card .field-error-text{color:#111827}.event-form-card .form-grid .required{color:#b91c1c}.frame-editor-sticky-bar{margin-bottom:24px}.frame-editor-modal>.form-grid.compact-grid{padding-top:10px;margin-top:0}.frame-editor-pin-layout{padding-top:6px}@media(max-width:760px){.frame-editor-sticky-bar{margin-bottom:20px}.frame-editor-modal>.form-grid.compact-grid{padding-top:12px}}.export-modal-overlay,.frame-editor-overlay,.export-modal-card,.frame-editor-modal{overscroll-behavior:contain}.compact-validation-card{margin:16px 0;padding:12px 14px}.compact-validation-card h3{font-size:1rem}.add-form-content .compact-validation-card,.add-ball-content .compact-validation-card{grid-column:1 / -1}.pattern-actions-row{display:grid;grid-template-columns:repeat(2,minmax(150px,1fr));gap:14px;justify-content:center;align-items:stretch;max-width:340px;margin:16px auto}.pattern-actions-row button{width:100%;min-height:52px;margin:0}@media(max-width:520px){.pattern-actions-row{grid-template-columns:1fr;max-width:none}}.bowler-actions-row,.center-actions-row,.pattern-actions-row,.event-actions-row{display:grid!important;grid-template-columns:repeat(2,minmax(150px,1fr));gap:14px;justify-content:center;align-items:stretch;max-width:360px;margin:16px auto;border-bottom:2px solid #111827;padding-bottom:14px}.bowler-actions-row button,.center-actions-row button,.pattern-actions-row button,.event-actions-row button{width:100%;min-height:52px;margin:0;display:inline-flex;align-items:center;justify-content:center;text-align:center}@media(max-width:520px){.bowler-actions-row,.center-actions-row,.pattern-actions-row,.event-actions-row{grid-template-columns:1fr;max-width:none}}.bowler-actions-row,.center-actions-row,.pattern-actions-row,.event-actions-row{max-width:none!important;width:100%;grid-template-columns:repeat(2,minmax(0,1fr))!important;margin:16px 0!important}@media(max-width:520px){.bowler-actions-row,.center-actions-row,.pattern-actions-row,.event-actions-row{grid-template-columns:1fr!important}}.ball-card{display:grid;gap:12px}.ball-card-header{display:flex;justify-content:space-between;gap:12px;align-items:start}.ball-edit-card{border-top:2px solid #111827;padding-top:10px}.ball-edit-summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:16px;align-items:center}.ball-edit-summary::-webkit-details-marker{display:none}.ball-edit-summary:after{content:"+";border:2px solid #111827;width:28px;height:28px;display:grid;place-items:center;font-weight:800;flex:0 0 auto}.ball-edit-card[open]>.ball-edit-summary:after{content:"−"}.ball-edit-content{border-top:2px solid #111827;margin-top:10px;padding-top:14px}@media(max-width:700px){.ball-card-header{display:grid}.ball-card-header .danger-button{width:100%}}.ball-edit-card{width:100%;grid-column:1 / -1}.ball-edit-content{width:100%}.ball-edit-content .form-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.ball-edit-content .form-grid label{min-width:0}.ball-edit-actions-row{display:grid;grid-template-columns:1fr;margin-top:16px}.ball-edit-actions-row button{width:100%;min-height:52px;margin:0}.ball-card{width:100%;box-sizing:border-box;grid-template-columns:minmax(0,1fr);justify-content:stretch;justify-items:stretch;align-items:stretch}.ball-card>*,.ball-card-header,.ball-edit-card,.ball-edit-content,.ball-edit-content .form-grid{width:100%;max-width:none;min-width:0;box-sizing:border-box}.ball-edit-summary{width:100%}.ball-edit-content .form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.ball-edit-content label,.ball-edit-content input,.ball-edit-content textarea,.ball-edit-content select{width:100%;max-width:none}.ball-edit-actions-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.ball-edit-actions-row .save-button,.ball-edit-actions-row .danger-button{width:100%;min-height:52px;margin:0;display:inline-flex;align-items:center;justify-content:center;text-align:center}@media(max-width:520px){.ball-edit-actions-row{grid-template-columns:1fr}}.logo-title-row{display:flex;justify-content:center;align-items:center;gap:18px;flex-wrap:wrap}.app-logo-mark{width:auto;height:clamp(72px,10vw,96px);object-fit:contain;flex:0 0 auto}@media(max-width:640px){.logo-title-row{gap:12px}.app-logo-mark{height:72px}}.app-logo-mark{width:clamp(64px,12vw,96px);height:clamp(64px,12vw,96px);object-fit:contain;flex:0 0 auto}@media(max-width:640px){.logo-title-row{gap:12px}.app-logo-mark{width:72px;height:72px}}.setup-import-button{background:#16a34a;color:#fff}.setup-import-button:hover{background:#15803d}.locked-pattern-card{border-style:dashed}.locked-pattern-text{color:#374151;font-weight:700;margin-top:8px}.locked-pattern-info{border:2px solid #111827;background:#f8fafc;padding:18px}.locked-pattern-info h3{margin-top:0;color:#0f2a44}.locked-pattern-info p{margin-bottom:0}.stat-card-button{width:100%;color:#111827;text-align:left;cursor:pointer}.stat-card-button:hover{background:#f3f4f6;transform:translateY(-1px)}.stat-card-button small{color:#0f2a44;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.stat-detail-overlay{position:fixed;inset:0;background:#111827ad;z-index:1100;padding:28px;overflow-y:auto}.stat-detail-modal{width:min(620px,100%);margin:0 auto;border:3px solid #111827;background:#fff;padding:24px}.stat-detail-header{display:flex;justify-content:space-between;gap:18px;border-bottom:2px solid #111827;padding-bottom:16px;margin-bottom:18px}.stat-detail-header h3{margin:0}.stat-detail-header .secondary-button{margin-top:0}.stat-detail-value{border:2px solid #111827;background:#f9fafb;padding:16px;display:grid;gap:4px;margin-bottom:16px}.stat-detail-value strong{font-size:2.25rem}.stat-detail-value span{color:#6b7280;font-weight:800}.stat-detail-formula{border:2px solid #111827;background:#f8fafc;padding:14px;margin:16px 0}.stat-detail-formula h4,.stat-detail-formula p{margin:0}.stat-detail-formula h4{margin-bottom:8px}.stat-detail-table th{width:45%;background:#f3f4f6}@media(max-width:700px){.stat-detail-overlay{padding:12px}.stat-detail-modal{padding:16px}.stat-detail-header{display:grid}}.frame-editor-modal{isolation:isolate}.frame-editor-sticky-bar{position:sticky;top:0;z-index:250;background:#fff;box-shadow:0 14px #fff}.frame-editor-modal>.form-grid.compact-grid,.frame-editor-pin-layout,.frame-navigation{position:relative;z-index:1;background:#fff}.frame-editor-side-panel,.shot-decks{position:relative;z-index:1}.frame-editor-overlay{isolation:isolate}.frame-editor-modal{position:relative;isolation:isolate;background:#fff;overflow-y:auto}.frame-editor-scroll-shield{position:sticky;top:0;height:0;z-index:900;pointer-events:none}.frame-editor-scroll-shield:before{content:"";position:absolute;left:0;right:16px;top:0;height:235px;background:#fff;border-bottom:2px solid #111827;box-shadow:0 18px #fff}.frame-editor-sticky-bar{position:sticky;top:0;z-index:950;background:#fff;isolation:isolate}.frame-editor-sticky-bar:before{content:"";position:absolute;left:0;right:0;top:-260px;height:260px;background:#fff;z-index:-1}.frame-editor-sticky-bar:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;background:#111827}.frame-editor-modal>*:not(.frame-editor-scroll-shield):not(.frame-editor-sticky-bar){position:relative;z-index:1;background:#fff}.frame-editor-pin-layout,.frame-editor-side-panel,.shot-decks{position:relative;z-index:1;background:#fff}.frame-editor-pin-layout .pin-deck{position:relative;z-index:1;background:#f9fafb}@media(max-width:700px){.frame-editor-scroll-shield:before{right:0;height:260px}.frame-editor-sticky-bar:before{top:-300px;height:300px}}.duel-pattern-toggle-card{border:2px solid #111827;background:#fff;padding:16px;margin-top:20px}.duel-pattern-toggle-card.active{background:#f8fafc}.duel-toggle-row{display:flex;align-items:flex-start;gap:12px;font-weight:800}.duel-toggle-row input{width:auto;margin-top:3px}.duel-toggle-row span{display:grid;gap:4px}.duel-toggle-row small{color:#6b7280;font-weight:600;line-height:1.45}.duel-pattern-fields{border-top:2px solid #111827;margin-top:14px;padding-top:14px}.duel-pattern-preview{margin-top:16px}.duel-pattern-preview h4{margin-top:0}.saved-set-top-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:12px;margin-bottom:16px}.saved-set-top-actions .primary-button,.saved-set-top-actions .secondary-button,.saved-set-top-actions .danger-button{margin-top:0}.app-shell{--ink: #0e1526;--ink-soft: #454b57;--ink-faint: #6a707c;--line: #ece9f2;--line-strong: #dfe1ea;--paper: #ffffff;--bg: #f6f7f9;--bg-tint: #f4f5f8;--accent: #e5241f;--accent-ink: #c11a17;--accent-soft: #fdeceb;--accent-soft-bd: #f7cecc;--radius-sm: 12px;--radius: 16px;--radius-lg: 24px;--pill: 999px;--shadow-1: 0 2px 4px rgba(16,25,45,.03), 0 12px 30px -10px rgba(16,25,45,.1);--shadow-2: 0 3px 8px rgba(16,25,45,.04), 0 24px 50px -16px rgba(16,25,45,.15);--shadow-3: 0 14px 32px -12px rgba(16,25,45,.14), 0 44px 80px -22px rgba(16,25,45,.22);--spring: cubic-bezier(.2,.8,.2,1);font-family:Open Sans,system-ui,Avenir,Helvetica,Arial,sans-serif;color:var(--ink);line-height:1.55;-webkit-font-smoothing:antialiased;width:100%;margin:0;padding:0}body:has(.app-shell){background:var(--bg)}.app-shell .app-onboarding{width:min(1040px,100%);margin:0 auto;padding:28px 20px 64px}.app-shell .shell-layout{display:flex;align-items:stretch;min-height:100vh}.app-shell .app-sidebar{position:sticky;top:0;align-self:flex-start;height:100vh;width:244px;flex:none;display:flex;flex-direction:column;gap:2px;padding:16px 14px;background:#fbfbfc;border-right:1px solid var(--line);overflow-y:auto}.app-shell .sidebar-brand{display:flex;align-items:center;gap:11px;width:100%;padding:8px 10px 16px;background:none;border:0;cursor:pointer;text-align:left}.app-shell .sidebar-brand .app-logo-mark{height:30px;width:auto}.app-shell .sidebar-brand-name{font:800 1.12rem/1 Open Sans;letter-spacing:-.02em;color:var(--ink)}.app-shell .sidebar-nav,.app-shell .sidebar-group{display:flex;flex-direction:column;gap:2px}.app-shell .sidebar-group-heading{margin:12px 0 4px;padding:0 12px;font:700 .62rem/1 JetBrains Mono;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-faint)}.app-shell .sidebar-link{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;border:0;border-radius:10px;background:none;cursor:pointer;text-align:left;font:600 .92rem/1.3 Open Sans;color:var(--ink-soft);transition:background .16s var(--spring),color .16s var(--spring)}.app-shell .sidebar-link:hover{background:#eef0f3;color:var(--ink)}.app-shell .sidebar-link.is-active{background:var(--accent-soft);color:var(--accent-ink)}.app-shell .sidebar-link-icon{flex:none;width:20px;text-align:center;font-size:1rem;line-height:1.3}.app-shell .sidebar-link-label{flex:1;min-width:0}.app-shell .sidebar-link-wip{color:var(--ink-faint)}.app-shell .sidebar-link .nav-wip-badge{flex:none;font:700 .58rem/1 JetBrains Mono;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);background:var(--bg-tint);border:1px solid var(--line);padding:3px 6px;border-radius:var(--pill)}.app-shell .sidebar-foot{margin-top:auto;padding:14px 12px 6px;font:400 .68rem/1.4 JetBrains Mono;letter-spacing:.04em;color:var(--ink-faint);border-top:1px solid var(--line)}.app-shell .app-main{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--paper)}.app-shell .app-topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:12px;height:60px;padding:0 clamp(16px,3vw,32px);background:#ffffffe0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.app-shell .app-topbar-title{margin:0;font:800 1.22rem/1 Open Sans;letter-spacing:-.02em;color:var(--ink)}.app-shell .sidebar-toggle{display:none;align-items:center;justify-content:center;width:38px;height:38px;flex:none;border:1px solid var(--line-strong);border-radius:10px;background:var(--paper);color:var(--ink);font-size:1.15rem;cursor:pointer}.app-shell .app-content{width:100%;max-width:1200px;margin:0 auto;padding:28px clamp(16px,3vw,32px) 72px}.app-shell .app-content .page-card{border:0;background:transparent;box-shadow:none;padding:0;margin:0;max-width:none;border-radius:0}.app-shell .dashboard{display:flex;flex-direction:column;gap:22px}.app-shell .dash-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.app-shell .dash-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:20px;align-items:stretch}.app-shell .dash-side{display:flex;flex-direction:column;gap:20px}.app-shell .dash-side>.dash-panel:last-child{flex:1 1 auto;display:flex;flex-direction:column}.app-shell .dash-side>.dash-panel:last-child .dash-actions{flex:1;justify-content:space-between}.app-shell .dash-side>.dash-panel:last-child .dash-action{flex:1 1 0;min-height:52px}.app-shell .dash-panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px}.app-shell .dash-panel h3{margin:0 0 14px;font:700 .78rem/1 JetBrains Mono;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.app-shell .dash-recent{list-style:none;margin:0;padding:0}.app-shell .dash-recent-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-top:1px solid var(--line)}.app-shell .dash-recent-row:first-child{border-top:0}.app-shell .dash-recent-date{flex:none;width:58px;font:500 .78rem/1 JetBrains Mono;color:var(--ink-faint)}.app-shell .dash-recent-where{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.app-shell .dash-recent-center{font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-shell .dash-recent-meta{font-size:.82rem;color:var(--ink-soft)}.app-shell .dash-recent-score{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:3px;font:700 1rem/1 JetBrains Mono;color:var(--ink)}.app-shell .dash-recent-score-tag{font:700 .56rem/1 JetBrains Mono;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}.app-shell .dash-scope{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.app-shell .dash-scope-label{font:700 .72rem/1 JetBrains Mono;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.app-shell .dash-scope-select{font:600 .9rem/1 Open Sans;color:var(--ink);background:var(--paper);border:1px solid var(--line-strong);border-radius:var(--pill);padding:8px 14px;cursor:pointer}.app-shell .dash-scope-select:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.app-shell .dash-scope-note{font-size:.82rem;color:var(--ink-faint)}.app-shell .dash-spark-wrap{position:relative;touch-action:none;cursor:crosshair}.app-shell .dash-spark{width:100%;height:64px;display:block}.app-shell .dash-spark-line{stroke:var(--accent);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.app-shell .dash-spark-dot{fill:var(--accent)}.app-shell .dash-spark-guide{stroke:var(--accent-soft-bd);stroke-width:1.5}.app-shell .dash-spark-hover-dot{fill:var(--accent-ink)}.app-shell .dash-spark-tooltip{position:absolute;transform:translate(-50%,calc(-100% - 9px));background:var(--ink);color:#fff;border-radius:8px;padding:5px 9px;display:flex;flex-direction:column;align-items:center;gap:1px;pointer-events:none;white-space:nowrap;box-shadow:var(--shadow-2);z-index:2}.app-shell .dash-spark-tooltip-score{font:700 .82rem/1 JetBrains Mono}.app-shell .dash-spark-tooltip-date{font:400 .62rem/1 JetBrains Mono;color:#cbd0da}.app-shell .dash-spark-caption{margin:8px 0 0;font:500 .74rem/1 JetBrains Mono;color:var(--ink-faint)}.app-shell .dash-actions{display:flex;flex-direction:column;gap:9px}.app-shell .dash-action{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:11px 14px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);font:600 .9rem/1 Open Sans;cursor:pointer;transition:border-color .18s var(--spring),background .18s var(--spring),transform .18s var(--spring)}.app-shell .dash-action:hover{border-color:var(--accent-soft-bd);background:var(--accent-soft);transform:translateY(-1px)}.app-shell .dash-action-primary{background:var(--accent);border-color:var(--accent);color:#fff}.app-shell .dash-action-primary:hover{background:var(--accent-ink);border-color:var(--accent-ink);color:#fff}.app-shell .dash-action-icon{font-size:1rem}.app-shell .dash-empty{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);padding:40px 34px;text-align:center;max-width:560px;margin:12px auto 0}.app-shell .dash-empty h2{margin:0 0 10px}.app-shell .dash-empty p{margin:0 auto 22px;max-width:46ch}.app-shell .dash-empty .dash-action{display:inline-flex;width:auto}@media(max-width:900px){.app-shell .dash-grid{grid-template-columns:1fr}.app-shell .dash-metrics{grid-template-columns:repeat(2,1fr)}}.app-shell .sidebar-scrim{display:none}@media(max-width:860px){.app-shell .app-sidebar{position:fixed;top:0;left:0;z-index:40;height:100vh;width:min(80%,300px);transform:translate(-100%);transition:transform .24s var(--spring);box-shadow:var(--shadow-3)}.app-shell .app-sidebar.is-open{transform:none}.app-shell .app-sidebar.is-open~.sidebar-scrim{display:block;position:fixed;inset:0;z-index:30;background:#0e152670}.app-shell .sidebar-toggle{display:inline-flex}}.app-shell *,.app-shell *:before,.app-shell *:after{box-sizing:border-box}.app-shell h1,.app-shell h2,.app-shell h3,.app-shell h4{font-family:Open Sans,sans-serif;font-weight:800;letter-spacing:-.025em;line-height:1.12;color:var(--ink)}.app-shell h2{font-size:clamp(1.6rem,3.4vw,2.05rem);margin:0 0 8px}.app-shell h3{font-size:1.12rem;margin:22px 0 10px}.app-shell p{line-height:1.6;color:var(--ink-soft)}.app-shell a{color:var(--accent-ink)}.app-shell .eyebrow{font-family:JetBrains Mono,monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);font-size:.72rem}.app-shell .logo-card{border:1px solid var(--line);background:var(--paper);border-radius:var(--radius-lg);padding:30px 28px;text-align:center;cursor:pointer;margin-bottom:26px;box-shadow:var(--shadow-1);transition:transform .3s var(--spring),box-shadow .3s var(--spring),border-color .3s}.app-shell .logo-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-2);border-color:var(--accent-soft-bd)}.app-shell .logo-title-row{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap}.app-shell .app-logo-mark{height:clamp(52px,10vw,76px);width:auto}.app-shell .logo-card h1{font-size:clamp(2.2rem,7vw,3.6rem);margin:0;letter-spacing:-.04em}.app-shell .logo-card p{margin:12px auto 0;color:var(--ink-soft);max-width:46ch;font-size:1rem}.app-shell .home-nav{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-auto-rows:1fr;gap:16px;justify-content:stretch}.app-shell .nav-button{position:relative;min-width:0;width:100%;min-height:104px;border:1px solid var(--line);background:var(--paper);border-radius:var(--radius);padding:22px;font-size:1.15rem;font-weight:700;color:var(--ink);text-align:left;cursor:pointer;box-shadow:var(--shadow-1);transition:transform .28s var(--spring),box-shadow .28s var(--spring),border-color .28s;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:12px}.app-shell .nav-button:after{content:"→";position:absolute;bottom:20px;right:22px;color:var(--accent);font-weight:700;opacity:0;transform:translate(-6px);transition:opacity .25s var(--spring),transform .25s var(--spring)}.app-shell .nav-button:hover{transform:translateY(-4px);box-shadow:var(--shadow-2);border-color:var(--accent-soft-bd)}.app-shell .nav-button:hover:after{opacity:1;transform:translate(0)}.app-shell .nav-button-wip:after{display:none}.app-shell .nav-wip-badge{margin-top:auto;align-self:flex-start;font-family:JetBrains Mono,monospace;font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--accent-ink);background:var(--accent-soft);border:1px solid var(--accent-soft-bd);border-radius:var(--pill);padding:3px 9px}.app-shell .coming-soon-page{max-width:640px}.app-shell .coming-soon-badge{display:inline-block;font-family:JetBrains Mono,monospace;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--accent-ink);background:var(--accent-soft);border:1px solid var(--accent-soft-bd);border-radius:var(--pill);padding:5px 12px;margin-bottom:14px}.app-shell .coming-soon-page h2{margin:0 0 8px}.app-shell .coming-soon-tagline{margin:0 0 14px;color:var(--ink-soft);font-size:1.05rem;font-weight:600}.app-shell .coming-soon-description{margin:0 0 22px;color:var(--ink-soft)}.app-shell .coming-soon-card{border:1px solid var(--line-strong);background:var(--bg-tint);border-radius:var(--radius);padding:20px 22px}.app-shell .coming-soon-card h3{margin:0 0 12px;font-size:1.05rem}.app-shell .coming-soon-list{margin:0;padding-left:20px;display:grid;gap:9px;color:var(--ink-soft)}.app-shell .coming-soon-list li{line-height:1.4}.app-shell .coming-soon-note{margin:22px 0 0;color:var(--ink-faint);font-size:.9rem}.app-shell .page-card{border:1px solid var(--line);background:var(--paper);border-radius:var(--radius-lg);padding:30px 32px;box-shadow:var(--shadow-1)}.app-shell .back-button{border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);border-radius:var(--pill);padding:9px 16px 9px 12px;margin-bottom:20px;font-weight:600;font-size:.92rem;cursor:pointer;box-shadow:var(--shadow-1);transition:transform .2s var(--spring),border-color .2s,color .2s}.app-shell .back-button:hover{border-color:var(--accent);color:var(--accent-ink);transform:translate(-2px)}.app-shell .setup-card{border:1px solid var(--line);background:var(--paper);border-radius:var(--radius-lg);padding:28px;box-shadow:var(--shadow-1)}.app-shell .setup-button-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}.app-shell .stats-collapsible-card,.app-shell .saved-game-collapsible-card{border:1px solid var(--line-strong)!important;background:var(--paper)!important;box-shadow:0 1px 3px #10192d0d,0 10px 22px -14px #10192d2e!important;border-radius:var(--radius)!important;padding:0!important;margin:0 0 16px!important;overflow:hidden}.app-shell .stats-collapsible-card .stats-collapsible-card,.app-shell .stats-collapsible-card .saved-game-collapsible-card{border:0!important;border-top:1px solid var(--line)!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;margin:0!important}.app-shell .stats-collapsible-card>.stats-section-summary,.app-shell .stats-collapsible-card[open]>.stats-section-summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px!important;margin:0!important;background:transparent!important;border:0!important;transition:color .2s var(--spring),background .2s var(--spring)}.app-shell .stats-collapsible-card>.stats-section-summary:hover{background:var(--bg-tint)!important}.app-shell .stats-collapsible-card[open]>.stats-section-summary{border-bottom:1px solid var(--line)!important}.app-shell .stats-collapsible-card .stats-collapsible-card>.stats-section-summary{padding:16px 2px!important}.app-shell .stats-collapsible-card .stats-collapsible-card[open]>.stats-section-summary{border-bottom:0!important}.app-shell .stats-collapsible-card .stats-collapsible-card>.stats-section-summary:hover{background:transparent!important}.app-shell .stats-section-summary::-webkit-details-marker{display:none}.app-shell .stats-section-summary:hover strong{color:var(--ink)}.app-shell .stats-section-summary>div{display:flex;flex-direction:column;gap:3px}.app-shell .stats-section-summary strong{font:800 1.18rem/1.2 Open Sans;letter-spacing:-.02em;color:var(--ink);transition:color .2s var(--spring)}.app-shell .stats-section-summary p{margin:0;font-size:.9rem;color:var(--ink-faint);max-width:70ch}.app-shell .stats-section-summary .summary-hint{display:none!important}.app-shell .stats-section-summary:after{content:""!important;flex:none;width:11px!important;height:11px!important;margin:0 6px 0 0!important;border:0!important;border-right:2.5px solid var(--ink-faint)!important;border-bottom:2.5px solid var(--ink-faint)!important;border-radius:0!important;transform:rotate(45deg);transition:transform .28s var(--spring),border-color .2s;background:none!important;box-shadow:none!important;padding:0!important}.app-shell .stats-section-summary:hover:after{border-right-color:var(--accent)!important;border-bottom-color:var(--accent)!important}.app-shell .stats-collapsible-card[open]>.stats-section-summary:after{content:""!important;transform:rotate(-135deg)}.app-shell .stats-collapsible-content{border:0!important;background:transparent!important;box-shadow:none!important;padding:14px 18px 18px!important;margin:0!important}.app-shell .stats-collapsible-card .stats-collapsible-card .stats-collapsible-content{padding:0 2px 18px!important}.app-shell .stats-collapsible-content.stats-summary-grid{margin-top:0!important}.app-shell .stats-collapsible-content>.form-grid:first-child{margin-top:0}.app-shell .primary-button{border:1px solid var(--ink);background:var(--ink);color:#fff;border-radius:var(--pill);padding:12px 22px;margin-top:20px;font-weight:600;cursor:pointer;box-shadow:var(--shadow-1);transition:transform .25s var(--spring),box-shadow .25s var(--spring)}.app-shell .primary-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-2)}.app-shell .primary-button:disabled{opacity:.45;cursor:not-allowed}.app-shell .save-button{border:1px solid #129d6a!important;background:var(--paper)!important;color:#0a7d55!important;border-radius:var(--pill);padding:12px 22px;margin-top:20px;font-weight:600;cursor:pointer;box-shadow:var(--shadow-1);transition:transform .25s var(--spring),background .25s,box-shadow .25s}.app-shell .save-button:hover:not(:disabled){background:#e9f9f1!important;transform:translateY(-2px);box-shadow:var(--shadow-2)}.app-shell .save-button:disabled{opacity:.45;cursor:not-allowed}.app-shell .secondary-button,.app-shell .import-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);border-radius:var(--pill);padding:12px 22px;margin-top:20px;font-weight:600;cursor:pointer;box-shadow:var(--shadow-1);transition:transform .25s var(--spring),border-color .25s,color .25s}.app-shell .secondary-button:hover:not(:disabled),.app-shell .import-button:hover{transform:translateY(-2px);border-color:var(--accent);color:var(--accent-ink)}.app-shell .secondary-button:disabled{opacity:.45;cursor:not-allowed}.app-shell .danger-button{border:1px solid var(--accent);background:var(--paper);color:var(--accent-ink);border-radius:var(--pill);padding:12px 22px;font-weight:600;cursor:pointer;box-shadow:var(--shadow-1);transition:transform .25s var(--spring),background .25s,color .25s}.app-shell .danger-button:hover{background:var(--accent);color:#fff;transform:translateY(-2px)}.app-shell .form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-top:18px}.app-shell label{display:block;font-weight:600;color:var(--ink)}.app-shell input,.app-shell select,.app-shell textarea{width:100%;border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:11px 12px;background:var(--paper);color:var(--ink);transition:border-color .2s var(--spring),box-shadow .2s var(--spring)}.app-shell input:focus,.app-shell select:focus,.app-shell textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.app-shell .required{color:var(--accent-ink);margin-left:2px}.app-shell .stat-card,.app-shell .mini-stat-card,.app-shell .wide-mini-stat-card{border:1.5px solid var(--line-strong);background:var(--paper);border-radius:var(--radius-sm);box-shadow:var(--shadow-1);padding:11px 13px;display:flex;flex-direction:column;gap:3px}.app-shell .stat-card strong{font-size:1.4rem;font-weight:800;letter-spacing:-.02em;color:var(--ink)}.app-shell .stat-card span{font-family:JetBrains Mono,monospace;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}.app-shell .stat-card-button{cursor:pointer;transition:transform .22s var(--spring),box-shadow .22s var(--spring),border-color .22s,background .22s}.app-shell .stat-card-button:hover{transform:translateY(-3px);box-shadow:var(--shadow-1);border-color:var(--accent-soft-bd);background:var(--paper)}.app-shell .stats-summary-grid .stat-card,.app-shell .deep-stats-grid .stat-card{gap:6px;justify-content:flex-start;text-align:left;align-items:flex-start}.app-shell .stats-summary-grid .stat-card strong,.app-shell .deep-stats-grid .stat-card strong{line-height:1.1}.app-shell .stats-summary-grid .stat-card span,.app-shell .deep-stats-grid .stat-card span{display:block;line-height:1.25;min-height:2.2em}.app-shell .mini-pin-deck{width:62px!important;height:52px!important}.app-shell .mini-pin{width:13px!important;height:13px!important;font-size:.46rem!important;border-width:1px!important;font-weight:700!important}.app-shell .stats-summary-grid .stat-card small,.app-shell .deep-stats-grid .stat-card small{margin-top:auto;padding-top:8px;font-family:JetBrains Mono,monospace;text-transform:uppercase;font-size:.66rem;letter-spacing:.07em;font-weight:700;color:var(--accent-ink)}.app-shell .stat-card.hero-card{background:linear-gradient(180deg,var(--paper),var(--accent-soft))!important;border-color:var(--accent-soft-bd)!important}.app-shell .stat-card.hero-card strong{color:var(--accent-ink)!important}.app-shell .section-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.app-shell .section-count{font:600 .68rem/1 JetBrains Mono,monospace;letter-spacing:.04em;color:var(--ink-faint);background:var(--bg-tint);border:1px solid var(--line-strong);border-radius:var(--pill);padding:4px 10px;white-space:nowrap}.app-shell .stats-table th .th-sort{border:0;background:transparent;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.app-shell .stats-table th .th-sort:hover{color:var(--accent-ink)}.app-shell .th-sort-ind{font-size:.82em;color:var(--ink-faint);opacity:.5}.app-shell .stats-table th[aria-sort=ascending] .th-sort,.app-shell .stats-table th[aria-sort=descending] .th-sort{color:var(--accent-ink)}.app-shell .stats-table th[aria-sort=ascending] .th-sort-ind,.app-shell .stats-table th[aria-sort=descending] .th-sort-ind{color:var(--accent);opacity:1}.app-shell .data-card,.app-shell .pattern-card,.app-shell .pattern-preview-card,.app-shell .team-set-card,.app-shell .transition-card,.app-shell .second-shot-card,.app-shell .baker-breakdown-card,.app-shell .about-card,.app-shell .field-validation-card,.app-shell .compact-validation-card,.app-shell .empty-state-card{border:1px solid var(--line);background:var(--paper);border-radius:var(--radius);box-shadow:none}.app-shell .add-form-card{border:1px solid var(--line);background:var(--bg-tint);border-radius:var(--radius);box-shadow:none}.app-shell .table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line-strong);border-radius:8px;background:var(--paper)}.app-shell .stats-table,.app-shell .distribution-table{width:100%;border-collapse:collapse;font-size:.86rem}.app-shell .stats-table th,.app-shell .distribution-table th{background:var(--bg-tint);color:var(--ink);font-family:JetBrains Mono,monospace;font-size:.68rem;letter-spacing:.04em;text-transform:uppercase;text-align:left;padding:7px 11px;position:sticky;top:0;border:0!important;border-bottom:1px solid var(--line-strong)!important;border-right:1px solid var(--line-strong)!important}.app-shell .stats-table td,.app-shell .distribution-table td{padding:6px 11px;color:var(--ink-soft);border:0!important;border-bottom:1px solid var(--line)!important;border-right:1px solid var(--line)!important}.app-shell .stats-table th:last-child,.app-shell .distribution-table th:last-child,.app-shell .stats-table td:last-child,.app-shell .distribution-table td:last-child{border-right:0!important}.app-shell .stats-table tr:last-child td{border-bottom:0}.app-shell .stats-table th,.app-shell .distribution-table th,.app-shell .stats-table td,.app-shell .distribution-table td{white-space:nowrap}.app-shell .stats-table td{font-variant-numeric:tabular-nums}.app-shell .stats-table th:first-child,.app-shell .stats-table td:first-child{position:sticky;left:0;z-index:1}.app-shell .stats-table td:first-child{background:var(--paper);font-weight:600;color:var(--ink)}.app-shell .stats-table th:first-child{z-index:2}.app-shell .stats-table tbody tr:nth-child(2n) td{background:var(--bg-tint)}.app-shell .stats-table tbody tr:nth-child(2n) td:first-child{background:#f0f1f5}.app-shell .stats-table tbody tr:hover td,.app-shell .stats-table tbody tr:hover td:first-child{background:var(--accent-soft)!important}.app-shell .helper-text,.app-shell .summary-hint{color:var(--ink-faint)}.app-shell .error-text,.app-shell .field-error-text{color:var(--accent-ink);font-weight:600}.app-shell .success-text{color:#0f766e;font-weight:600}.app-shell .unsaved-text{color:var(--accent-ink)}.app-shell .toast-message{border:1px solid var(--accent-soft-bd);background:var(--accent-soft);color:var(--accent-ink);border-radius:var(--radius-sm);padding:12px 14px;box-shadow:var(--shadow-1)}.app-shell .stats-toast-anchor{position:relative;height:0;z-index:30}.app-shell .toast-message.stats-toast{position:absolute;top:8px;left:50%;transform:translate(-50%);margin:0;width:max-content;max-width:min(520px,92%);border-radius:var(--pill);padding:9px 10px 9px 18px;box-shadow:var(--shadow-2);animation:stats-toast-pop .18s var(--spring)}.app-shell .toast-message.stats-toast button{flex:0 0 auto;width:22px!important;height:22px!important;border-radius:50%!important;border:1px solid var(--accent-soft-bd)!important;background:var(--paper)!important;color:var(--accent-ink)!important;font-weight:700;cursor:pointer;box-shadow:none!important;display:inline-flex;align-items:center;justify-content:center;line-height:1}@keyframes stats-toast-pop{0%{opacity:0;transform:translate(-50%) translateY(-8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.app-shell .add-form-summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:700;color:var(--ink)}.app-shell .add-form-summary::-webkit-details-marker{display:none}@media(max-width:640px){.app-shell{padding:16px 14px 48px}.app-shell .logo-card{padding:22px 18px;border-radius:var(--radius)}.app-shell .page-card{padding:18px 16px;border-radius:var(--radius)}.app-shell .setup-card{padding:18px 16px}.app-shell .home-nav{grid-template-columns:1fr;gap:12px}.app-shell .nav-button{padding:18px;font-size:1.05rem}.app-shell .primary-button,.app-shell .secondary-button,.app-shell .danger-button,.app-shell .save-button,.app-shell .import-button,.app-shell .back-button{min-height:44px}.app-shell .form-grid{grid-template-columns:1fr}.app-shell .setup-button-row{flex-direction:column}.app-shell .setup-button-row>*{width:100%}.app-shell input,.app-shell select,.app-shell textarea{font-size:16px}.app-shell .stats-section-summary{padding:16px 2px}.app-shell .stats-table th,.app-shell .stats-table td{padding:8px 10px}}@media(prefers-reduced-motion:reduce){.app-shell *,.app-shell *:before,.app-shell *:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}.app-shell .bowler-card,.app-shell .center-card,.app-shell .pattern-card,.app-shell .event-card,.app-shell .bowler-card[open],.app-shell .center-card[open],.app-shell .pattern-card[open],.app-shell .event-card[open]{border:1px solid var(--line)!important;background:var(--paper)!important;box-shadow:var(--shadow-1)!important;border-radius:var(--radius)!important;padding:2px 20px!important;margin:0 0 12px!important;transition:box-shadow .25s var(--spring),border-color .25s,transform .25s var(--spring)}.app-shell .bowler-card:hover,.app-shell .center-card:hover,.app-shell .pattern-card:hover,.app-shell .event-card:hover{border-color:var(--accent-soft-bd)!important;box-shadow:var(--shadow-2)!important}.app-shell .bowler-card[open],.app-shell .center-card[open],.app-shell .pattern-card[open],.app-shell .event-card[open]{box-shadow:var(--shadow-2)!important;border-color:var(--accent-soft-bd)!important}.app-shell .add-form-card,.app-shell .add-form-card[open]{border:1.5px dashed var(--accent-soft-bd)!important;background:var(--accent-soft)!important;box-shadow:none!important;border-radius:var(--radius)!important;padding:2px 20px!important;margin:0 0 22px!important}.app-shell .add-form-card[open]{border-style:solid!important}.app-shell .add-form-summary strong{color:var(--accent-ink)!important}.app-shell .add-form-summary:after{border-right-color:var(--accent)!important;border-bottom-color:var(--accent)!important}.app-shell .bowler-summary,.app-shell .center-summary,.app-shell .pattern-summary,.app-shell .event-summary,.app-shell .add-form-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;cursor:pointer;padding:16px 0!important;margin:0!important;background:transparent!important;border:0!important;transition:color .2s var(--spring)}.app-shell .bowler-summary:hover,.app-shell .center-summary:hover,.app-shell .pattern-summary:hover,.app-shell .event-summary:hover,.app-shell .add-form-summary:hover{background:transparent!important;padding-left:0!important;padding-right:0!important}.app-shell .bowler-card[open]>.bowler-summary,.app-shell .center-card[open]>.center-summary,.app-shell .pattern-card[open]>.pattern-summary,.app-shell .event-card[open]>.event-summary,.app-shell .add-form-card[open]>.add-form-summary{border-bottom:0!important;margin-bottom:6px!important;padding-bottom:10px!important}.app-shell .bowler-summary strong,.app-shell .center-summary strong,.app-shell .pattern-summary strong,.app-shell .event-summary strong,.app-shell .add-form-summary strong,.app-shell .saved-set-summary strong{color:var(--ink)!important;font:800 1.15rem/1.2 Open Sans!important;transition:color .2s var(--spring)}.app-shell .bowler-summary:hover strong,.app-shell .center-summary:hover strong,.app-shell .pattern-summary:hover strong,.app-shell .event-summary:hover strong,.app-shell .add-form-summary:hover strong{color:var(--ink)!important}.app-shell .bowler-summary p,.app-shell .center-summary p,.app-shell .pattern-summary p,.app-shell .event-summary p,.app-shell .add-form-summary p{color:var(--ink-faint)!important;font-weight:500!important;margin:3px 0 0!important}.app-shell summary .summary-hint{display:none!important}.app-shell .bowler-summary:after,.app-shell .center-summary:after,.app-shell .pattern-summary:after,.app-shell .event-summary:after,.app-shell .add-form-summary:after{content:""!important;flex:none;width:11px!important;height:11px!important;margin:0 6px 0 0!important;border:0!important;border-right:2.5px solid var(--ink-faint)!important;border-bottom:2.5px solid var(--ink-faint)!important;border-radius:0!important;transform:rotate(45deg);transition:transform .28s var(--spring),border-color .2s;background:none!important;box-shadow:none!important;padding:0!important}.app-shell .bowler-summary:hover:after,.app-shell .center-summary:hover:after,.app-shell .pattern-summary:hover:after,.app-shell .event-summary:hover:after,.app-shell .add-form-summary:hover:after{border-right-color:var(--accent)!important;border-bottom-color:var(--accent)!important}.app-shell .bowler-card[open]>.bowler-summary:after,.app-shell .center-card[open]>.center-summary:after,.app-shell .pattern-card[open]>.pattern-summary:after,.app-shell .event-card[open]>.event-summary:after,.app-shell .add-form-card[open]>.add-form-summary:after{content:""!important;transform:rotate(-135deg)}.app-shell .bowler-details-content,.app-shell .center-details-content,.app-shell .pattern-details-content,.app-shell .event-details-content,.app-shell .add-form-content{border-top:0!important;margin-top:0!important;padding-top:0!important;padding-bottom:16px!important}.app-shell .event-actions-row,.app-shell .saved-game-actions-row,.app-shell .pattern-actions-row{border:0!important;padding:0!important;margin:0 0 6px!important}.app-shell .saved-game-actions-row>button,.app-shell .saved-set-top-actions>button{margin-top:0!important}.app-shell .data-card,.app-shell .set-metadata-card,.app-shell .event-preview-card,.app-shell .pattern-preview-card,.app-shell .duel-pattern-preview{border:1px solid var(--line)!important;background:var(--bg-tint)!important;border-radius:var(--radius)!important;box-shadow:none!important}.app-shell .stats-collapsible-content{padding-bottom:20px!important}.app-shell .form-grid{gap:14px;margin-top:16px}.app-shell .logo-card{margin-bottom:22px}.app-shell .add-ball-card,.app-shell .ball-edit-card,.app-shell .saved-game-card,.app-shell .saved-set-card,.app-shell .saved-set-details,.app-shell .add-ball-card[open],.app-shell .ball-edit-card[open],.app-shell .saved-game-card[open],.app-shell .saved-set-card[open],.app-shell .saved-set-details[open]{border:0!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;padding:4px 0!important;margin:0!important;border-top:1px solid var(--line)!important}.app-shell .add-ball-summary,.app-shell .ball-edit-summary,.app-shell .saved-game-summary,.app-shell .saved-set-summary,.app-shell .saved-notes-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;cursor:pointer;padding:16px 4px!important;margin:0!important;background:transparent!important;border:0!important}.app-shell .add-ball-summary strong,.app-shell .ball-edit-summary strong,.app-shell .saved-game-summary strong,.app-shell .saved-notes-summary strong{color:var(--ink)!important;font-weight:800!important}.app-shell .add-ball-summary:after,.app-shell .ball-edit-summary:after,.app-shell .saved-game-summary:after,.app-shell .saved-set-summary:after,.app-shell .saved-notes-summary:after{content:""!important;flex:none;width:11px!important;height:11px!important;margin:0 6px 0 0!important;border:0!important;border-right:2.5px solid var(--ink-faint)!important;border-bottom:2.5px solid var(--ink-faint)!important;border-radius:0!important;transform:rotate(45deg);transition:transform .28s var(--spring),border-color .2s;background:none!important;box-shadow:none!important;padding:0!important}.app-shell .add-ball-card[open]>.add-ball-summary:after,.app-shell .ball-edit-card[open]>.ball-edit-summary:after,.app-shell .saved-game-card[open]>.saved-game-summary:after,.app-shell .saved-set-card[open]>.saved-set-summary:after,.app-shell .saved-set-details[open]>.saved-notes-summary:after{content:""!important;transform:rotate(-135deg)}.app-shell .add-ball-content,.app-shell .ball-edit-content,.app-shell .saved-game-detail-content{border-top:0!important;margin-top:0!important;padding-top:0!important}.app-shell .saved-set-content-divider{border:0!important;border-top:1px solid var(--line)!important}.app-shell .saved-sets-list .saved-set-card{display:flex!important;align-items:center;justify-content:space-between;gap:16px;width:100%;text-align:left;cursor:pointer;border:1px solid var(--line-strong)!important;border-radius:var(--radius)!important;background:var(--paper)!important;padding:14px 18px!important;margin:0 0 10px!important;box-shadow:var(--shadow-1)!important;transition:border-color .18s var(--spring),box-shadow .18s var(--spring),transform .18s var(--spring)}.app-shell .saved-sets-list .saved-set-card:last-child{margin-bottom:0!important}.app-shell .saved-sets-list .saved-set-card:hover{border-color:var(--accent-soft-bd)!important;box-shadow:var(--shadow-2)!important;transform:translateY(-1px)}.app-shell .saved-set-card-info strong{display:block;color:var(--ink);font-weight:800;font-size:1.02rem}.app-shell .saved-set-card-info p{margin:2px 0 0;color:var(--ink-faint);font-size:.88rem}.app-shell .saved-set-card-cue{flex:0 0 auto;color:var(--ink-faint);font-size:1.5rem;line-height:1}.app-shell .saved-sets-list .saved-set-card:hover .saved-set-card-cue{color:var(--accent-ink)}.app-shell .saved-set-modal-overlay{position:fixed;inset:0;z-index:60;overflow-y:auto;display:flex;align-items:flex-start;justify-content:center;padding:5vh 16px;background:#10192d6b;animation:saved-set-fade .16s var(--spring)}@keyframes saved-set-fade{0%{opacity:0}to{opacity:1}}.app-shell .saved-set-modal{width:min(940px,100%);max-height:90vh;display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--line-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-3);overflow:hidden}.app-shell .saved-set-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 22px;border-bottom:1px solid var(--line);flex:0 0 auto}.app-shell .saved-set-modal-head strong{font-size:1.15rem;font-weight:800;color:var(--ink)}.app-shell .saved-set-modal-head p{margin:3px 0 0;color:var(--ink-faint);font-size:.9rem}.app-shell .saved-set-modal-head>button{margin:0!important;flex:0 0 auto}.app-shell .saved-set-modal-body{padding:6px 22px 22px;overflow-y:auto}.app-shell .saved-set-modal-body .saved-set-details{border:0!important;padding:0!important}.app-shell .spare-leave-card,.app-shell .board-analysis-card,.app-shell .team-set-card,.app-shell .stats-table-card,.app-shell .baker-stats-card{background:var(--paper)!important}.app-shell .stats-collapsible-card.spare-leave-card,.app-shell .stats-collapsible-card.board-analysis-card{border:1px solid var(--line-strong)!important;box-shadow:0 1px 3px #10192d0d,0 10px 22px -14px #10192d2e!important;border-radius:var(--radius)!important}.app-shell .about-card,.app-shell .add-ball-card-inner,.app-shell .average-game-card,.app-shell .baker-frame-card,.app-shell .baker-rotation-card,.app-shell .baker-stats-card,.app-shell .ball-card,.app-shell .ball-stats-card,.app-shell .board-analysis-card,.app-shell .completed-games-card,.app-shell .deep-stats-card,.app-shell .duel-pattern-toggle-card,.app-shell .frame-card,.app-shell .current-frame-card,.app-shell .frame-score-card,.app-shell .game-notes-card,.app-shell .lane-preview-card,.app-shell .locked-pattern-info,.app-shell .metadata-game-lane-card,.app-shell .next-game-card,.app-shell .score-distribution-card,.app-shell .score-grid-card,.app-shell .session-summary,.app-shell .set-specific-stats-card,.app-shell .shot-summary,.app-shell .second-shot-card,.app-shell .spare-leave-card,.app-shell .stat-detail-formula,.app-shell .stat-detail-value,.app-shell .event-summary-card,.app-shell .duel-pattern-fields,.app-shell .export-scope-card,.app-shell .export-file-preview,.app-shell .export-section-option,.app-shell .bowler-order-card{border:1px solid var(--line)!important;background:var(--paper)!important;border-radius:var(--radius)!important;box-shadow:none!important}.app-shell .frame-editor-modal,.app-shell .stat-detail-modal,.app-shell .export-modal-card{border:1px solid var(--line)!important;background:var(--paper)!important;border-radius:var(--radius-lg)!important;box-shadow:var(--shadow-3)!important}.app-shell .frame-editor-header,.app-shell .stat-detail-header,.app-shell .export-modal-header,.app-shell .frame-header,.app-shell .card-header,.app-shell .frame-editor-sticky-bar{border-color:var(--line)!important}.app-shell .frame-editor-sticky-bar{background:var(--paper)!important}.app-shell .frame-editor-scroll-shield:before{border-bottom:1px solid var(--line)!important}.app-shell .frame-editor-sticky-bar{border-bottom:0!important}.app-shell .frame-editor-sticky-bar:after{background:var(--line)!important;height:1px!important;bottom:-1px!important}.app-shell .frame-editor-progress{gap:8px!important}.app-shell .frame-editor-progress .small-button{border:1px solid var(--line-strong)!important;background:var(--paper)!important;color:var(--ink)!important;border-radius:var(--radius-sm)!important;padding:8px 12px!important;min-width:40px;font-weight:600;box-shadow:none!important;transition:border-color .2s var(--spring),color .2s,background .2s}.app-shell .frame-editor-progress .small-button:hover{border-color:var(--accent-soft-bd)!important;color:var(--accent-ink)!important}.app-shell .frame-editor-progress .active-frame-button,.app-shell .frame-editor-progress .small-button.active-frame-button{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}.app-shell .frame-editor-score-preview{border:1px solid var(--line-strong)!important;background:var(--bg-tint)!important;border-radius:var(--radius)!important;padding:16px 18px!important}.app-shell .frame-editor-pin-layout .shot-decks>div>h3,.app-shell .frame-editor-pin-layout .second-shot-card>h3{margin-top:0!important}.app-shell .bowler-actions-row,.app-shell .center-actions-row,.app-shell .post-game-actions,.app-shell .progress-row,.app-shell .completed-game-row{border-color:var(--line)!important}.app-shell{--grid-line: #d3d8e4;--pin-line: #c4cad8}.app-shell .score-grid-card{padding:12px!important}.app-shell .score-grid{border-top:1px solid var(--grid-line)!important;border-left:1px solid var(--grid-line)!important;border-radius:var(--radius-sm);overflow:hidden}.app-shell .score-frame{border-right:1px solid var(--grid-line)!important;border-bottom:1px solid var(--grid-line)!important;background:#f8fbff!important}.app-shell .score-total{border-top:1px solid var(--grid-line)!important;background:#f2f7ff!important}.app-shell .score-frame-header,.app-shell .frame-score-track,.app-shell .frame-score-bar{border-color:var(--grid-line)!important}.app-shell .pin-deck{border:1px solid var(--pin-line)!important;background:var(--bg-tint)!important;border-radius:var(--radius-lg)!important}.app-shell .pin-button{border:2px solid var(--pin-line)!important;color:var(--ink)!important;transition:border-color .15s var(--spring),background .15s var(--spring),color .15s}.app-shell .pin-button:hover{border-color:var(--accent)!important}.app-shell .mini-pin-deck{border:1px solid var(--pin-line)!important;border-radius:var(--radius-sm)!important}.app-shell .mini-pin{border:1.5px solid var(--pin-line)!important}.app-shell .leave-pin{border-color:var(--pin-line)!important}.app-shell .progress-row{color:var(--ink-soft)!important;gap:8px!important}.app-shell .progress-row span{border:1px solid var(--line)!important;background:var(--bg-tint)!important;color:var(--ink-soft)!important;border-radius:var(--pill)!important;padding:6px 12px!important;font:600 .8rem/1 Open Sans!important}.app-shell .frame-edit-warning-text{border:1px solid #f4d6a6!important;background:#fff8ef!important;color:#8a5a12!important;border-radius:var(--radius-sm)!important;padding:12px 14px!important}.app-shell .second-shot-card{border:1px solid var(--line)!important;background:var(--paper)!important;border-radius:var(--radius)!important;box-shadow:none!important}.app-shell .session-summary{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:6px 24px!important;padding:16px 18px!important}.app-shell .session-summary p{margin:0!important;font-size:.92rem}.app-shell .shot-summary{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:4px 20px!important}.app-shell .shot-summary p{margin:0!important}.app-shell .frame-navigation{display:flex!important;flex-wrap:wrap;gap:12px;align-items:center}.app-shell .frame-navigation .primary-button{margin-left:auto}.app-shell .shot-switcher{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:14px}.app-shell .shot-tab{border:1px solid var(--line-strong);background:var(--paper);color:var(--ink-soft);border-radius:var(--pill);padding:8px 16px;font-weight:600;font-size:.9rem;cursor:pointer;transition:background .2s var(--spring),color .2s,border-color .2s,transform .2s var(--spring)}.app-shell .shot-tab:hover{border-color:var(--accent);color:var(--accent-ink)}.app-shell .shot-tab.is-active{background:var(--ink);color:#fff;border-color:var(--ink)}.app-shell .shot-switch-hint{font:600 .72rem/1 JetBrains Mono,monospace;color:var(--ink-faint);margin-left:4px}.app-shell .pin-entry-side{display:flex;flex-direction:column;gap:20px}.app-shell .pin-entry-side .shot-summary{border:1px solid var(--line);background:var(--bg-tint);border-radius:var(--radius);padding:14px 16px;box-shadow:none}.app-shell{--grid-line: #cdd3e0;--grid-line-strong: #aab2c4}.app-shell .score-frame-number{border-bottom:1px solid var(--grid-line)!important;background:#e7f1fb!important;color:var(--ink)!important}.app-shell .score-rolls span{border-left:1px solid var(--grid-line)!important;color:var(--ink)!important;font-weight:800}.app-shell .score-total{border-top:1.5px solid var(--grid-line-strong)!important;background:#eef4fc!important;color:var(--ink)!important}.app-shell .frame-navigation{grid-template-columns:none!important}.app-shell .frame-navigation>button{width:auto!important;min-height:44px;flex:0 1 auto}.app-shell .shot-deck-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap}.app-shell .pin-deck{position:relative}.app-shell .pin-deck-nav{position:absolute;bottom:10px;z-index:3;width:42px;height:42px;border-radius:50%;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);font-size:24px;line-height:1;font-weight:700;cursor:pointer;display:grid;place-items:center;box-shadow:var(--shadow-1);transition:background .2s var(--spring),color .2s,border-color .2s,transform .2s var(--spring)}.app-shell .pin-deck-nav.is-prev{left:10px}.app-shell .pin-deck-nav.is-next{right:10px}.app-shell .pin-deck-nav:hover:not(:disabled){background:var(--ink);color:#fff;border-color:var(--ink);transform:scale(1.06)}.app-shell .pin-deck-nav:disabled{opacity:.28;cursor:not-allowed}.app-shell .complete-frame-button{width:100%;margin-top:16px}.app-shell .pin-entry-side .deck-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:4px}.app-shell .pin-entry-side .deck-actions .secondary-button{margin-top:0}.app-shell .pin-entry-side .deck-actions .complete-frame-button{flex:1 1 auto;width:auto;margin-top:0}.app-shell .field-validation-card,.app-shell .compact-validation-card,.app-shell .bowler-order-card,.app-shell .event-summary-card,.app-shell .baker-rotation-card,.app-shell .next-game-card,.app-shell .locked-pattern-info,.app-shell .session-summary{background:var(--bg-tint)!important;border-color:var(--line-strong)!important}.app-shell .field-validation-card:not(.compact-validation-card):not(.error-validation-card),.app-shell .bowler-order-card,.app-shell .log-setup-card{background:var(--paper)!important;border:1px solid var(--line)!important;border-radius:var(--radius)!important;box-shadow:var(--shadow-1)!important;padding:20px 22px!important}.app-shell .field-validation-card:not(.compact-validation-card) h3,.app-shell .bowler-order-card h3,.app-shell .log-setup-card h3{margin-top:0!important}.app-shell .log-setup-card>.form-grid{margin-top:14px}.app-shell .error-validation-card{background:var(--accent-soft)!important;border:1px solid var(--accent-soft-bd)!important;box-shadow:none!important}.app-shell .error-validation-card h3{color:var(--accent-ink)!important}.app-shell .field-validation-card:not(.compact-validation-card) ul{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:9px}.app-shell .field-validation-card:not(.compact-validation-card) li{position:relative;padding-left:26px;color:var(--ink-soft);line-height:1.45}.app-shell .field-validation-card:not(.compact-validation-card) li:before{content:"";position:absolute;left:0;top:.2em;width:14px;height:14px;border-radius:50%;border:2px solid var(--accent-soft-bd);background:var(--accent-soft)}.app-shell .bowler-actions-row,.app-shell .center-actions-row,.app-shell .pattern-actions-row,.app-shell .ball-edit-actions-row,.app-shell .event-actions-row{display:grid!important;grid-template-columns:1fr 1fr;gap:12px!important;align-items:stretch!important;margin:0 0 6px!important}.app-shell .bowler-actions-row>button,.app-shell .center-actions-row>button,.app-shell .pattern-actions-row>button,.app-shell .ball-edit-actions-row>button,.app-shell .event-actions-row>button{width:100%!important;margin:0!important;min-height:46px}.app-shell .arsenal-list{max-height:360px;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:12px;padding:2px;margin:12px 0 14px}.app-shell .ball-card{border:1px solid var(--line)!important;background:var(--paper)!important;border-radius:var(--radius)!important;box-shadow:var(--shadow-1)!important;padding:16px 18px!important;margin:0!important}.app-shell .ball-card-header strong{font-size:1.02rem;color:var(--ink)}.app-shell .ball-card-header p{margin:2px 0 0;color:var(--ink-faint);font-size:.9rem}.app-shell .add-ball-card,.app-shell .add-ball-card[open]{border:1.5px dashed var(--accent-soft-bd)!important;background:var(--accent-soft)!important;box-shadow:none!important;border-radius:var(--radius)!important;padding:2px 20px!important;margin:4px 0 0!important;border-top:1.5px dashed var(--accent-soft-bd)!important}.app-shell .add-ball-card[open]{border-style:solid!important}.app-shell .add-ball-summary strong{color:var(--accent-ink)!important}.app-shell .arsenal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0 2px}.app-shell .arsenal-head h4{margin:0}.app-shell .add-ball-trigger{margin-top:0!important;padding:8px 16px!important;min-height:0!important}.app-shell .arsenal-list{max-height:340px!important;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:10px;background:var(--bg-tint)!important;border:1px solid var(--line-strong)!important;border-radius:var(--radius)!important;padding:12px!important;margin:10px 0 14px!important}.app-shell .ball-card{border:1px solid var(--line)!important;background:var(--paper)!important;border-radius:var(--radius-sm)!important;box-shadow:var(--shadow-1)!important;padding:12px 16px!important;margin:0!important}.app-shell .ball-card-header{display:flex!important;align-items:center;justify-content:space-between;gap:12px}.app-shell .ball-card-header strong{font-size:1rem}.app-shell .ball-card-header p{margin:2px 0 0!important;font-size:.86rem;color:var(--ink-faint)}.app-shell .ball-edit-trigger{flex:none;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);border-radius:var(--pill);padding:7px 16px;font:600 .85rem/1 Open Sans;cursor:pointer;box-shadow:var(--shadow-1);transition:border-color .2s var(--spring),color .2s}.app-shell .ball-edit-trigger:hover{border-color:var(--accent);color:var(--accent-ink)}.app-shell .ps-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}.app-shell .ps-modal-backdrop{position:absolute;inset:0;background:#0e152680}.app-shell .ps-modal-panel{position:relative;z-index:1;width:100%;max-width:660px;max-height:88vh;overflow:auto;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-3);padding:28px 28px 30px}.app-shell .ps-modal-panel .center-actions-row,.app-shell .ps-modal-panel .ball-edit-actions-row,.app-shell .ps-modal-panel .event-actions-row,.app-shell .ps-modal-panel .pattern-actions-row,.app-shell .ps-modal-panel .bowler-actions-row,.app-shell .ps-modal-panel .saved-game-actions-row{margin:22px 0 2px!important;gap:14px!important}.app-shell .ps-modal-panel .structured-notes-grid{margin-top:16px}.app-shell .ps-modal-title{font-size:1.4rem;margin:0 0 18px;padding-right:40px}.app-shell .ps-modal-close{position:absolute;top:16px;right:16px;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:var(--paper);color:var(--ink);font-size:20px;line-height:1;cursor:pointer;display:grid;place-items:center;transition:background .2s,color .2s}.app-shell .ps-modal-close:hover{background:var(--ink);color:#fff}body:has(.ps-modal){overflow:hidden}.app-shell .ball-card-header>div{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 8px;min-width:0}.app-shell .ball-card-header strong{font-size:.98rem}.app-shell .ball-card-header p{margin:0!important;font-size:.86rem;color:var(--ink-faint);display:inline-flex;align-items:baseline}.app-shell .ball-card-header p:before{content:"·";margin-right:8px;color:var(--line-strong);font-weight:700}.app-shell .list-actions{display:flex;justify-content:flex-end;margin:6px 0 16px}.app-shell .list-actions .add-entity-trigger{margin-top:0!important}.app-shell .page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}.app-shell .page-head-text{flex:1 1 320px;min-width:0}.app-shell .page-head-text h2{margin-bottom:6px}.app-shell .page-head-text p{margin:0}.app-shell .page-head .add-entity-trigger{flex:none;margin-top:6px!important}.app-shell .bowler-card,.app-shell .center-card,.app-shell .pattern-card,.app-shell .event-card{border:1px solid var(--line-strong)!important;box-shadow:0 2px 5px #10192d0d,0 10px 22px -12px #10192d2b!important}.app-shell .center-notes{margin:0 0 12px!important;color:var(--ink-soft)}.app-shell .center-actions-row.single,.app-shell .event-actions-row.single,.app-shell .pattern-actions-row.single,.app-shell .bowler-actions-row.single{display:flex!important;grid-template-columns:none!important;justify-content:center;margin:16px 0 2px!important;border-bottom:0!important;padding-bottom:0!important}.app-shell .center-actions-row.single>button,.app-shell .event-actions-row.single>button,.app-shell .pattern-actions-row.single>button,.app-shell .bowler-actions-row.single>button{width:auto!important}.app-shell .bowler-details-content .arsenal-section{border-top:1px solid var(--line)!important;margin-top:18px!important;padding-top:20px!important}.app-shell .bowler-preview-card{border:1px solid var(--line-strong)!important;background:var(--bg-tint)!important;border-radius:var(--radius)!important;padding:16px 18px!important;margin:0 0 4px!important}.app-shell .bowler-preview-card h4{margin:0 0 12px!important}.app-shell .bowler-preview-card p{margin:0 0 8px!important;color:var(--ink-soft)!important}.app-shell .bowler-preview-card p:last-child{margin-bottom:0!important}.app-shell .bowler-preview-card p strong{color:var(--ink)!important;font-weight:700}.app-shell .event-preview-card p,.app-shell .pattern-preview-card p{color:var(--ink-soft)!important;font-weight:400}.app-shell .event-preview-card p strong,.app-shell .pattern-preview-card p strong{color:var(--ink)!important;font-weight:700}.app-shell .pattern-preview-card p.helper-text,.app-shell .pattern-preview-card p.helper-text strong{color:var(--ink-faint)!important}.app-shell .patterns-toolbar{display:inline-grid;grid-template-columns:1fr 1fr;align-items:center;gap:12px;margin:0 0 2px}.app-shell .patterns-toolbar .resource-link-pill,.app-shell .patterns-toolbar .add-entity-trigger{width:100%;margin:0!important;justify-content:center;text-align:center}.app-shell .duel-pattern-toggle-card{padding:18px 20px!important;margin-top:6px!important;border:1px solid var(--line-strong)!important}.app-shell .duel-pattern-toggle-card.active{border-color:var(--accent-soft-bd)!important;background:var(--accent-soft)!important}.app-shell .duel-toggle-row{display:flex!important;align-items:flex-start;gap:12px;font-weight:700}.app-shell .duel-toggle-row input[type=checkbox]{width:18px!important;height:18px;min-width:18px;flex:none;margin:2px 0 0!important;padding:0!important;accent-color:var(--accent);border-radius:4px;box-shadow:none!important}.app-shell .duel-toggle-row span{display:grid;gap:3px}.app-shell .duel-toggle-row small{font-weight:500;color:var(--ink-faint);line-height:1.45}.app-shell .duel-pattern-fields{border:0!important;border-top:1px solid var(--accent-soft-bd)!important;background:transparent!important;border-radius:0!important;margin-top:16px!important;padding:18px 0 0!important}.app-shell .duel-pattern-fields .form-grid{margin-top:0;align-items:end;row-gap:8px;column-gap:28px}.app-shell .duel-pattern-fields .form-grid>label{display:flex;flex-direction:column;gap:8px;height:100%}.app-shell .duel-pattern-fields .form-grid>label .field-caption{display:block;font-weight:600}.app-shell .duel-pattern-fields .form-grid>label select{margin-top:auto}.app-shell .duel-pattern-fields .pattern-preview-card{margin-top:20px!important}.app-shell .ps-modal-panel .add-form-content>*+*{margin-top:18px!important}.app-shell .ps-modal-panel .add-form-content .compact-validation-card{margin-top:6px!important;padding:12px 16px!important}.app-shell .ps-modal-panel .add-form-content .compact-validation-card h3{margin:0 0 8px!important}.app-shell .ps-modal-panel .add-form-content .primary-button{margin-top:20px!important}.app-shell .duel-pattern-toggle-card{padding-bottom:14px!important}.app-shell .pattern-preview-card{padding:18px 20px!important}.app-shell .pattern-preview-card h4{margin:0 0 12px!important}.app-shell .pattern-preview-card p{margin:0 0 9px!important;line-height:1.5}.app-shell .pattern-preview-card p:last-child{margin-bottom:0!important}.app-shell .pattern-preview-card p.helper-text{margin-top:12px!important}.app-shell .resource-link-pill{display:inline-flex;align-items:center;gap:8px;margin:0 0 18px;padding:9px 16px;border:1px solid var(--line-strong);border-radius:999px;background:var(--paper);color:var(--ink);font-size:.9rem;font-weight:600;text-decoration:none;box-shadow:0 1px 2px #10192d0d;transition:border-color .2s var(--spring),background .2s var(--spring),color .2s var(--spring),box-shadow .2s var(--spring),transform .2s var(--spring)}.app-shell .resource-link-pill:hover{border-color:var(--accent-soft-bd);background:var(--accent-soft);color:var(--accent-ink);box-shadow:0 3px 8px -3px #10192d2e;transform:translateY(-1px)}.app-shell .resource-link-pill .resource-link-arrow{font-size:.95rem;color:var(--accent);line-height:1}.app-shell .resource-link-pill:hover .resource-link-arrow{color:var(--accent-ink)}.app-shell .data-summary-grid .stat-card{gap:6px;justify-content:flex-start}.app-shell .data-summary-grid .stat-card span{display:block;line-height:1.3;min-height:2.6em}.app-shell .data-summary-grid .stat-card strong{margin-top:auto;line-height:1}.app-shell .data-summary-grid{grid-template-columns:repeat(auto-fit,minmax(128px,1fr))!important;gap:12px!important;margin:22px 0 26px!important}.app-shell .data-card{display:flex!important;align-items:center;justify-content:space-between;gap:28px;padding:18px 22px!important}.app-shell .data-card>div{flex:1 1 auto;min-width:0}.app-shell .data-card>.primary-button,.app-shell .data-card>.import-button,.app-shell .data-card .data-button-row>.danger-button{flex:none;width:auto!important;min-width:12rem;min-height:0!important;margin:0!important;padding:12px 24px!important;white-space:nowrap;justify-content:center;text-align:center}.app-shell .data-card .data-button-row{flex:none;display:block!important;width:auto;margin:0!important}@media(max-width:640px){.app-shell .data-card{flex-direction:column;align-items:stretch;gap:14px}.app-shell .data-card>.primary-button,.app-shell .data-card>.import-button,.app-shell .data-card .data-button-row>.danger-button{width:100%!important;min-width:0}.app-shell .data-card .data-button-row{width:100%}}.app-shell .about-card h3,.app-shell .data-card h3{margin-top:0!important}.app-shell .about-page{max-width:680px}.app-shell .about-lead{margin:14px 0 24px;max-width:none;color:var(--ink-soft);font-size:1.02rem;line-height:1.6}.app-shell .about-links-section{margin-top:26px}.app-shell .about-links-heading{margin:0 0 12px!important;font:700 .78rem/1 JetBrains Mono;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.app-shell .about-links{display:flex;flex-wrap:wrap;gap:12px}.app-shell .about-links .resource-link-pill{margin:0}.app-shell .simple-about-grid{gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))!important}.app-shell .simple-about-grid .about-card{padding:18px 20px!important;min-height:0!important;display:flex;flex-direction:column;gap:6px}.app-shell .simple-about-grid .about-card h3{margin:0!important}.app-shell .simple-about-grid .about-card p{margin:0!important;color:var(--ink-soft)}.app-shell .simple-about-grid .about-card a{color:var(--accent-ink);font-weight:700;text-decoration:none;border-bottom:1px solid var(--accent-soft-bd);padding-bottom:1px;transition:border-color .2s var(--spring)}.app-shell .simple-about-grid .about-card a:hover{border-color:var(--accent)}.app-shell .stats-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap}.app-shell .stats-page-head>div p{margin:4px 0 0}.app-shell .stats-export-button{flex:0 0 auto;margin:0!important;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);border-radius:var(--pill);padding:9px 18px;font:600 .9rem Open Sans;cursor:pointer;box-shadow:var(--shadow-1);transition:border-color .15s,color .15s}.app-shell .stats-export-button:hover:not(:disabled){border-color:var(--accent-soft-bd);color:var(--accent-ink)}.app-shell .stats-export-button:disabled{opacity:.5;cursor:not-allowed}.app-shell .stats-filter-panel{border:0;background:transparent;border-radius:0;box-shadow:none;padding:0;margin:18px 0 8px}.app-shell .stats-filter-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding-bottom:18px;border-bottom:1px solid var(--line)}.app-shell .stats-scope-toggle{display:inline-flex;gap:2px;padding:3px;background:var(--bg-tint);border:1px solid var(--line-strong);border-radius:var(--pill)}.app-shell .stats-scope-toggle button{border:0!important;background:transparent!important;color:var(--ink-soft)!important;border-radius:var(--pill)!important;padding:7px 15px!important;font:600 .86rem Open Sans!important;cursor:pointer;transition:.15s;box-shadow:none!important}.app-shell .stats-scope-toggle button.is-active{background:var(--paper)!important;color:var(--accent)!important;box-shadow:var(--shadow-1)!important}.app-shell .filter-pill{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;flex:1 1 175px;min-width:150px;background:var(--paper);border:1px solid var(--line-strong);border-radius:var(--pill);padding:7px 8px 7px 16px;box-shadow:var(--shadow-1);cursor:pointer;margin:0;transition:border-color .15s,background .15s,box-shadow .15s}.app-shell .filter-pill:hover{border-color:var(--accent-soft-bd);background:var(--bg-tint)}.app-shell .filter-pill:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.app-shell .filter-pill-k{flex:0 0 auto;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-faint);white-space:nowrap}.app-shell .filter-pill-v{flex:1 1 auto;text-align:left;font:700 .88rem Open Sans;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-shell .filter-pill-chev{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--bg-tint);color:var(--ink-soft);font-size:.62rem;transition:background .15s,color .15s}.app-shell .filter-pill:hover .filter-pill-chev{background:var(--accent-soft);color:var(--accent-ink)}.app-shell .filter-pill.is-set{border-color:var(--accent-soft-bd);background:var(--accent-soft)}.app-shell .filter-pill.is-set .filter-pill-v{color:var(--accent-ink)}.app-shell .filter-pill.is-set .filter-pill-chev{background:var(--paper);color:var(--accent-ink)}.app-shell .filter-pill .filter-pill-native{position:absolute;inset:0;width:100%!important;height:100%;margin:0!important;padding:0!important;opacity:0;cursor:pointer;border:0!important;background:transparent!important;box-shadow:none!important;appearance:none;-webkit-appearance:none;-moz-appearance:none;font-size:1rem}.app-shell .filter-pill-date{cursor:default}.app-shell .filter-pill-date .filter-pill-dateinput{appearance:none;border:0!important;background:transparent!important;box-shadow:none!important;padding:0!important;margin:0!important;width:auto!important;min-width:0!important;font:700 .84rem Open Sans!important;color:var(--accent-ink)!important;cursor:pointer;outline:none}.app-shell .stats-more-button{display:inline-flex;align-items:center;gap:7px;margin:0!important;background:transparent;border:1px dashed var(--line-strong);color:var(--ink-soft);border-radius:var(--pill);padding:7px 14px;font:600 .84rem Open Sans;cursor:pointer;transition:.15s}.app-shell .stats-more-button:hover{border-color:var(--accent-soft-bd);color:var(--accent-ink)}.app-shell .stats-more-button.is-open{border-style:solid;background:var(--bg-tint)}.app-shell .stats-more-button.is-active{border-color:var(--accent-soft-bd);color:var(--accent-ink)}.app-shell .stats-more-badge{background:var(--accent-soft);color:var(--accent-ink);border-radius:var(--pill);font-size:.68rem;font-weight:700;padding:1px 7px}.app-shell .stats-more-tray{display:flex;flex-wrap:wrap;gap:10px;padding:14px 16px;margin:12px 0 0;background:var(--bg-tint);border:1px solid var(--line);border-radius:var(--radius)}.app-shell .stats-reset-link{margin:0!important;background:transparent!important;border:0!important;color:var(--accent-ink)!important;font:600 .84rem Open Sans!important;cursor:pointer;padding:7px 10px!important;box-shadow:none!important;white-space:nowrap}.app-shell .stats-reset-link:hover{text-decoration:underline}.app-shell .stats-section-toolbar{display:flex;justify-content:flex-end;gap:8px;margin:16px 0 14px}.app-shell .stats-toolbar-button{margin:0!important;border:1.5px solid var(--line-strong);background:var(--paper);color:var(--ink);border-radius:var(--pill);padding:6px 16px;font:600 .8rem Open Sans;cursor:pointer;box-shadow:var(--shadow-1);transition:border-color .15s,color .15s,box-shadow .15s}.app-shell .stats-toolbar-button:hover{border-color:var(--accent-soft-bd);color:var(--accent-ink);box-shadow:var(--shadow-2)}.app-shell .bowler-list,.app-shell .center-list,.app-shell .event-list,.app-shell .pattern-list{display:flex!important;flex-direction:column;gap:12px;max-height:460px;overflow-y:auto;overscroll-behavior:contain;background:var(--bg-tint)!important;border:1px solid var(--line-strong)!important;border-radius:var(--radius-lg)!important;padding:14px!important;margin:18px 0 0!important}.app-shell .bowler-list{max-height:720px}.app-shell .bowler-list,.app-shell .center-list,.app-shell .event-list,.app-shell .pattern-list{max-height:none!important;overflow:visible!important;background:transparent!important;border:0!important;border-radius:0!important;padding:0!important;margin:18px 0 0!important;gap:14px}.app-shell .bowler-list .bowler-card,.app-shell .center-list .center-card,.app-shell .event-list .event-card,.app-shell .pattern-list .pattern-card{margin:0!important}.app-shell .bowler-list .empty-state-card,.app-shell .center-list .empty-state-card,.app-shell .event-list .empty-state-card,.app-shell .pattern-list .empty-state-card{margin:0!important;background:var(--paper)!important}.app-shell .saved-sets-list .stats-collapsible-content{max-height:720px;overflow-y:auto;overscroll-behavior:contain}
