.streak-rank-badge{--rank-light:#fbf1da;--rank-face:#e9cca0;--rank-shade:#cba574;--rank-ink:#60401f;--rank-rim:#8c6237;vertical-align:middle;width:88px;max-width:100%;height:104px;color:var(--rank-ink);letter-spacing:0;flex:none;justify-content:center;align-items:center;line-height:1;display:inline-flex}.streak-rank-badge[data-rank=bronze]{--rank-light:#ffebd9;--rank-face:#e2b487;--rank-shade:#bd8151;--rank-ink:#6b3515;--rank-rim:#97582b}.streak-rank-badge[data-rank=iron]{--rank-light:#edf1f3;--rank-face:#c6d0d6;--rank-shade:#8f9da7;--rank-ink:#35434d;--rank-rim:#657480}.streak-rank-badge[data-rank=silver]{--rank-light:#fff;--rank-face:#e1e6f2;--rank-shade:#b1bdd4;--rank-ink:#475470;--rank-rim:#8796b2}.streak-rank-badge[data-rank=gold]{--rank-light:#fff8d8;--rank-face:#f3d16d;--rank-shade:#d8a940;--rank-ink:#67470a;--rank-rim:#b38925}.streak-rank-badge[data-rank=platinum]{--rank-light:#faf5ff;--rank-face:#e1d6f0;--rank-shade:#b9a4d2;--rank-ink:#594074;--rank-rim:#9477b3}.streak-rank-badge[data-rank=diamond]{--rank-light:#f3fcff;--rank-face:#c8e6f6;--rank-shade:#86bbdb;--rank-ink:#275a78;--rank-rim:#5897bb}.streak-rank-emblem{filter:drop-shadow(0 2px 1px #19283324);flex:none;width:88px;height:104px;display:block;position:relative}.streak-rank-emblem>.streak-rank-shield{width:100%;height:100%;color:var(--rank-rim);stroke-width:.9px;position:absolute;inset:0}.streak-rank-light{stop-color:var(--rank-light)}.streak-rank-face{stop-color:var(--rank-face)}.streak-rank-shade{stop-color:var(--rank-shade)}.streak-rank-emblem>.streak-rank-inset{color:#ffffffa6;fill:none;stroke-width:.35px;width:calc(100% - 12px);height:calc(100% - 12px);position:absolute;inset:6px}.streak-rank-content{text-shadow:0 1px #ffffff80;flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute;top:16px;left:9px;right:9px}.streak-rank-material{stroke-width:1.8px;flex:none;width:22px;height:22px;display:block}.streak-rank-name{text-align:center;white-space:nowrap;width:100%;font-size:12px;font-weight:750;line-height:15px;display:block}.streak-rank-tier{font-family:Georgia,Times New Roman,serif;font-size:28px;font-weight:700;line-height:28px;display:block}.streak-rank-badge.is-compact,.streak-rank-badge.is-compact .streak-rank-emblem{width:72px;height:86px}.streak-rank-badge.is-compact .streak-rank-inset{width:calc(100% - 10px);height:calc(100% - 10px);inset:5px}.streak-rank-badge.is-compact .streak-rank-content{gap:3px;top:13px;left:7px;right:7px}.streak-rank-badge.is-compact .streak-rank-material{width:18px;height:18px}.streak-rank-badge.is-compact .streak-rank-name{font-size:11px;line-height:13px}.streak-rank-badge.is-compact .streak-rank-tier{font-size:23px;line-height:23px}.streak-summary{color:var(--ink);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:center;gap:6px 8px;font-size:13px;font-weight:600;display:inline-flex}.streak-summary>svg{width:18px;height:18px;color:var(--coral);flex:none}.streak-summary strong{font-weight:850}.streak-summary-multiplier{border-left:1px solid var(--line-strong);color:var(--accent);padding-left:8px;font-weight:800}.streak-manager{border-top:1px solid var(--line);color:var(--ink);padding-block:16px}.streak-manager-heading{margin-bottom:8px}.streak-manager h2{align-items:center;gap:8px;margin:0 0 8px;font-size:17px;line-height:1.4;display:flex}.streak-manager h2>svg{width:20px;height:20px;color:var(--coral);flex-shrink:0}.streak-manager-status{color:var(--muted);margin:6px 0 0;font-size:12px;line-height:1.5}.streak-calendar{width:min(100%,350px);margin:0}.streak-calendar-heading{grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:8px;display:grid}.streak-calendar-heading h3{text-align:center;margin:0;font-size:15px}.streak-icon-button{width:44px;height:44px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:10px;display:inline-flex}.streak-icon-button svg{width:20px;height:20px}.streak-icon-button:hover{color:var(--ink);background:var(--surface-tint)}.streak-icon-button:disabled{opacity:.4;cursor:not-allowed}.streak-calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));padding-top:4px;display:grid}.streak-calendar-grid>div{min-width:0}.streak-calendar-weekday{color:var(--muted);text-align:center;padding-block:5px;font-size:11px;font-weight:700}.streak-calendar-day{background:var(--white);border:2px solid var(--white);width:100%;min-width:0;height:44px;box-shadow:inset 0 0 0 1px var(--line);color:var(--ink);font-variant-numeric:tabular-nums;cursor:pointer;background-clip:padding-box;border-radius:6px;justify-content:center;align-items:center;padding:0;font-size:13px;display:flex;position:relative}.streak-calendar-day.is-practiced,.streak-calendar-key i.is-practiced{background-color:var(--accent-soft);color:var(--accent)}.streak-calendar-day.is-restored,.streak-calendar-key i.is-restored{background-color:var(--lilac-soft);color:var(--lilac-text)}.streak-calendar-day.is-excluded,.streak-calendar-key i.is-excluded{background-color:var(--surface-disabled);color:var(--muted)}.streak-calendar-day.is-today{outline:2px solid var(--focus);outline-offset:-4px}.streak-calendar-day:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}.streak-calendar-day:hover:not(:disabled){box-shadow:inset 0 0 0 2px var(--accent)}.streak-calendar-day:disabled{cursor:default;opacity:.55}.streak-calendar-day svg{width:10px;height:10px;position:absolute;bottom:3px;right:3px}.streak-calendar-key{color:var(--muted);flex-wrap:wrap;gap:6px 14px;margin-top:11px;font-size:11px;display:flex}.streak-calendar-key span{align-items:center;gap:5px;display:inline-flex}.streak-calendar-key i{border:1px solid var(--line);border-radius:2px;width:10px;height:10px}.streak-edit-backdrop{z-index:155;background:var(--overlay);justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0;overflow-y:auto}.streak-edit-dialog{overscroll-behavior:contain;border:1px solid var(--line-strong);background:var(--white);width:min(100%,440px);max-height:calc(100svh - 32px);box-shadow:var(--shadow);color:var(--ink);border-radius:8px;margin:auto;overflow-y:auto}.streak-edit-dialog>header{z-index:1;background:var(--white);border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) 44px;align-items:center;gap:8px;padding:8px 10px 8px 16px;display:grid;position:sticky;top:0}.streak-edit-dialog h2{overflow-wrap:anywhere;align-items:center;gap:8px;margin:0;font-size:16px;line-height:1.4;display:flex}.streak-edit-dialog h2 svg{width:18px;height:18px;color:var(--accent);flex-shrink:0}.streak-editor{padding:16px}.streak-date-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:14px;display:grid}.streak-date-fields label{min-width:0}.streak-editor form>label,.streak-date-fields label,.streak-cancel-confirm label{flex-direction:column;gap:7px;font-size:13px;font-weight:750;display:flex}.streak-editor input[type=date],.streak-editor textarea,.streak-editor select{border:1px solid var(--line-strong);background:var(--white);width:100%;min-width:0;min-height:44px;color:var(--ink);border-radius:5px;padding:10px 11px;font-size:16px;line-height:1.5}.streak-editor textarea{resize:vertical}.streak-reason-field{margin-top:15px}.streak-field-note{color:var(--muted);margin:7px 0 12px;font-size:12px;line-height:1.65}.streak-editor form>.streak-checkbox{cursor:pointer;flex-direction:row;align-items:center;gap:9px;min-height:44px;margin-bottom:12px;display:flex}.streak-checkbox input{width:20px;height:20px;accent-color:var(--accent);flex-shrink:0;margin:0}.streak-edit-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.streak-edit-actions button{white-space:normal;max-width:100%;min-height:44px;padding:10px 12px}.streak-edit-actions button svg{flex-shrink:0;width:17px;height:17px}.streak-breaks{margin-top:22px}.streak-breaks h3{margin:0 0 5px;font-size:13px}.streak-breaks ul{margin:0;padding:0;list-style:none}.streak-breaks li{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px;padding-block:6px;font-size:13px;display:flex}.streak-breaks li>span{flex:200px;line-height:1.6}.streak-breaks small{color:var(--muted);display:block}.streak-cancel-confirm{width:100%;padding-block:6px 10px}.streak-cancel-confirm>div{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.streak-cancel-confirm button{min-height:44px}.streak-form-error,.streak-form-message{margin:14px 0 0;font-size:13px;line-height:1.65}.streak-form-error{color:var(--danger-text)}.streak-form-message{color:var(--success-text)}@media (min-width:1200px){.streak-manager{grid-template-columns:minmax(0,1fr) 350px;align-items:start;gap:0 24px;display:grid}.streak-manager-heading{padding-top:10px}.streak-manager>.streak-form-message{grid-column:1/-1}}.streak-celebration-backdrop{z-index:160;background:var(--overlay);justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0;overflow-y:auto}.streak-celebration{isolation:isolate;border:1px solid var(--line-strong);background:var(--white);width:min(100%,450px);max-height:calc(100svh - 32px);box-shadow:var(--shadow);color:var(--ink);text-align:center;border-radius:8px;margin:auto;padding:30px 28px 24px;position:relative;overflow-y:auto}.streak-celebration .completion-fireworks{z-index:-1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.streak-celebration-close{position:absolute;top:4px;right:4px}.streak-celebration-mark{width:44px;height:44px;color:var(--coral);justify-content:center;align-items:center;margin:2px auto 12px;display:flex}.streak-celebration-mark svg{width:34px;height:34px}.streak-celebration.is-milestone .streak-celebration-mark{color:var(--accent)}.streak-celebration h2{overflow-wrap:anywhere;margin:0;font-size:24px;line-height:1.3}.streak-celebration>p{color:var(--muted);margin:10px 0 0;font-size:14px;line-height:1.7}.streak-celebration-count{font-variant-numeric:tabular-nums;flex-direction:column;align-items:center;min-height:103px;margin:18px 0 12px;display:flex}.streak-celebration-count strong{color:var(--accent);overflow-wrap:anywhere;max-width:100%;font-size:64px;line-height:1.05}.streak-celebration-count.is-long strong{font-size:36px}.streak-celebration-count>span{color:var(--muted);margin-top:6px;font-size:13px}.streak-celebration-multiplier{opacity:0;flex-wrap:wrap;justify-content:center;align-items:center;gap:7px;min-height:44px;margin-bottom:20px;transition:opacity .22s,transform .22s;display:flex;transform:translateY(5px)}.streak-celebration-multiplier>span{color:var(--accent);font-size:24px;font-weight:850}.streak-celebration-multiplier strong{font-size:13px;font-weight:700}.streak-celebration.is-revealed .streak-celebration-multiplier{opacity:1;transform:none}.streak-celebration>.primary-button{width:100%;min-height:48px;padding-block:10px;position:relative}.streak-celebration>.primary-button svg{width:18px;height:18px}@media (max-width:380px){.streak-celebration{padding:26px 18px 18px}.streak-celebration h2{font-size:21px}.streak-celebration-count{margin-block:15px 8px}.streak-manager{margin-inline:-8px}.streak-edit-dialog>header{padding-left:12px}.streak-editor{padding:12px}.streak-date-fields{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){.streak-celebration-multiplier{transition:none}}.play-recap-shell{background:var(--paper);justify-content:center;align-items:center;min-height:100svh;padding:clamp(16px,4vw,48px) 16px;display:flex}.play-recap-shell.is-embedded{background:0 0;min-height:0;margin-top:24px;padding:0}.play-recap-shell.is-embedded .play-recap-panel{width:100%}.play-recap-panel{border:1px solid var(--line);background:var(--white);border-radius:12px;width:min(600px,100%);min-width:0;padding:clamp(20px,4vw,36px)}.play-recap-heading{text-align:center}.play-recap-heading .eyebrow{margin:0 0 10px}.play-recap-heading h1{overflow-wrap:anywhere;text-wrap:balance;margin:0;font-size:clamp(24px,4vw,32px);line-height:1.2}.play-recap-heading h1:focus{outline:none}.play-recap-heading time{color:var(--muted);margin-top:10px;font-size:13px;line-height:1.5;display:block}.play-recap-stats{border-block:1px solid var(--line);text-align:center;grid-template-columns:repeat(3,minmax(0,1fr));margin:24px 0 0;padding:16px 0;display:grid}.play-recap-stats>div{flex-direction:column-reverse;justify-content:end;gap:6px;min-width:0;padding:0 8px;display:flex}.play-recap-stats>div+div{border-left:1px solid var(--line)}.play-recap-stats dt{color:var(--muted);font-size:13px;line-height:1.4}.play-recap-stats dd{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin:0;font-size:clamp(24px,4vw,32px);font-weight:800;line-height:1.2}.play-recap-neutral{color:var(--muted);text-align:center;margin:10px 0 0;font-size:14px;line-height:1.5}.play-recap-practice{margin-top:24px}.play-recap-practice h2{margin:0;font-size:17px;line-height:1.4}.play-recap-practice ul{flex-wrap:wrap;gap:8px;margin:12px 0 0;padding:0;list-style:none;display:flex}.play-recap-practice li{background:var(--surface-tint);overflow-wrap:anywhere;border-radius:8px;max-width:100%;padding:8px 12px;font-size:14px;line-height:1.5}.play-recap-practice p{color:var(--muted);margin:10px 0 0;font-size:14px;line-height:1.5}.play-recap-encouragement{color:var(--muted);text-align:center;text-wrap:pretty;margin:24px 0;font-size:15px;line-height:1.6}.play-recap-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.play-recap-actions button{justify-content:center;gap:8px;min-width:0;min-height:48px;padding:10px 12px;font-size:15px;line-height:1.4}.play-recap-actions button svg{flex:0 0 18px;width:18px;height:18px}:is(.play-recap-actions .quiet-button,.play-recap-actions:not(:has(.secondary-button)) .primary-button,.play-recap-actions:not(:has(.primary-button)) .secondary-button){grid-column:1/-1}.play-recap-history{min-width:0;margin-top:24px}.play-recap-history-heading h2{margin:0;font-size:18px;line-height:1.4}.play-recap-history-heading p,.play-recap-history-empty{color:var(--muted);margin:6px 0 0;font-size:13px;line-height:1.5}.play-recap-history>ul{border:1px solid var(--line);border-radius:10px;margin:14px 0 0;padding:0;list-style:none;overflow:hidden}.play-recap-history>ul>li+li{border-top:1px solid var(--line)}.play-recap-history li button{background:var(--white);text-align:left;cursor:pointer;border:0;justify-content:space-between;align-items:center;gap:12px;width:100%;min-width:0;min-height:72px;padding:12px 16px;display:flex}.play-recap-history li button:hover{background:var(--surface-tint)}.play-recap-history li button:focus-visible{z-index:1;outline-offset:-4px;position:relative}.play-recap-history li button>span{gap:4px;min-width:0;display:grid}.play-recap-history time{overflow-wrap:anywhere;font-size:14px;font-weight:750;line-height:1.4}.play-recap-history small{color:var(--muted);font-size:12px;line-height:1.5}.play-recap-history li button>svg{width:18px;height:18px;color:var(--muted);flex:0 0 18px}.game-complete-actions .completion-recap-button,.game-complete-actions .completion-replay-button{grid-column:1/-1}.play-shell>.game-stop-playing{min-height:44px;margin:8px auto 20px;padding-inline:18px;display:flex}.time-warning.recap-player-picker{text-align:left;overscroll-behavior:contain;border-radius:10px;flex-direction:column;gap:16px;width:min(500px,100%);min-width:0;max-height:calc(100svh - 36px);padding:24px;display:flex}.time-warning.recap-player-picker h2{overflow-wrap:anywhere;margin:0;font-size:26px;line-height:1.2}.time-warning.recap-player-picker>button{white-space:normal;overflow-wrap:anywhere;flex:none;justify-content:center;width:100%;min-width:0;min-height:48px;padding:10px 14px}.recap-player-picker fieldset{border:0;flex:none;gap:8px;min-width:0;margin:0;padding:0;display:grid}.recap-player-picker legend{margin-bottom:10px;padding:0;font-size:14px;font-weight:750;line-height:1.4}.recap-player-picker label{border:1px solid var(--line);cursor:pointer;border-radius:8px;align-items:center;gap:12px;min-width:0;min-height:64px;padding:12px;display:flex}.recap-player-picker label:has(input:checked){border-color:var(--accent-line);background:var(--surface-tint)}.recap-player-picker input[type=radio]{width:20px;height:20px;accent-color:var(--accent);flex:0 0 20px;margin:0}.recap-player-picker label>span{overflow-wrap:anywhere;min-width:0;font-size:16px;font-weight:700;line-height:1.4}.recap-player-picker label small{color:var(--muted);margin-top:4px;font-size:13px;font-weight:500;line-height:1.4;display:block}.recap-player-picker fieldset:disabled label{opacity:.65;cursor:wait}.time-warning[aria-labelledby=stop-play-title]{border-radius:10px;min-width:0;padding:24px}.time-warning[aria-labelledby=stop-play-title] h2{font-size:28px;line-height:1.2}.time-warning[aria-labelledby=stop-play-title]>button{white-space:normal;overflow-wrap:anywhere;justify-content:center;width:100%;min-width:0;min-height:48px;padding:10px 14px}.time-warning[aria-labelledby=stop-play-title]>button+button{margin-top:8px}@media (max-width:380px){.play-recap-panel{padding:20px 12px}.play-recap-stats>div{padding:0 5px}.play-recap-stats dt{font-size:12px}.play-recap-actions{grid-template-columns:minmax(0,1fr)}.play-recap-history li button{padding-inline:12px}.time-warning.recap-player-picker,.time-warning[aria-labelledby=stop-play-title]{padding:20px 16px}}.admin-subtabs.admin-subtabs-with-streaks{grid-template-columns:repeat(3,minmax(0,1fr))}.streak-usage{min-width:0}.streak-usage-note,.streak-usage-status{color:var(--muted);overflow-wrap:anywhere;font-size:12px;line-height:1.65}.streak-usage table{border-collapse:collapse;table-layout:fixed;width:100%;color:var(--ink);font-size:13px;line-height:1.5}.streak-usage th,.streak-usage td{border-bottom:1px solid var(--line);overflow-wrap:anywhere;padding:8px}.streak-usage th{text-align:left;font-weight:650}.streak-usage thead th{color:var(--muted);font-size:11px;font-weight:750}.streak-usage th:first-child{width:78%;padding-left:0}.streak-usage th:last-child:not(:first-child),.streak-usage td{text-align:right;font-variant-numeric:tabular-nums;padding-right:0}.streak-usage-note{margin:15px 0}@media (max-width:600px){.admin-subtabs.admin-subtabs-with-streaks{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-subtabs-with-streaks>.admin-streaks-tab{grid-column:1/-1}}
