.app{max-width:1000px;margin:0 auto;padding:var(--space-4) var(--space-4) var(--space-7);display:flex;flex-direction:column;gap:var(--space-5)}.panel{background:var(--color-bg-raised);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4)}.opp-board-panel>summary{cursor:pointer;font-weight:600;font-size:1rem}.opp-board-panel>summary:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.opp-board-help{color:var(--color-text-muted);font-size:.85rem;margin:var(--space-3) 0}.loading-state{display:flex;align-items:center;gap:var(--space-3);color:var(--color-text-muted);padding:var(--space-5)}.spinner{width:18px;height:18px;border-radius:50%;border:2px solid var(--color-border);border-top-color:var(--color-accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation:none}}.card-tile{--card-w: 42px;--card-h: 58px;width:var(--card-w);height:var(--card-h);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-suit-black);display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:700;font-size:.95rem;line-height:1.05;box-shadow:var(--shadow-card);user-select:none;position:relative;border:1px solid var(--color-surface-muted)}.card-tile--red{color:var(--color-suit-red)}.card-tile--joker{color:var(--color-joker)}.card-tile__rank{font-size:1rem}.card-tile__suit{font-size:1.1rem;margin-top:-2px}.card-tile--sm{--card-w: 30px;--card-h: 42px;font-size:.75rem}.card-grid{display:grid;grid-template-columns:repeat(13,1fr);gap:var(--space-1)}@media (max-width: 700px){.card-grid{grid-template-columns:repeat(7,1fr)}}.card-grid__cell{border:none;background:none;padding:0;cursor:pointer;display:flex;justify-content:center}.card-grid__cell .card-tile{width:100%;max-width:44px}.card-grid__cell:disabled{opacity:.3;cursor:not-allowed}.card-grid__cell[aria-pressed=true] .card-tile{outline:2px solid var(--color-accent);outline-offset:1px}.card-grid__jokers{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.hand-tray{display:flex;flex-wrap:wrap;gap:var(--space-2);min-height:58px;padding:var(--space-2);border:1px dashed var(--color-border);border-radius:var(--radius-md)}.hand-tray__empty{color:var(--color-text-muted);font-size:.85rem;align-self:center}.hand-tray__slot{border:none;background:none;padding:0;cursor:pointer}.hand-tray__slot--duplicate .card-tile{outline:2px solid var(--color-danger);outline-offset:1px}.counter{display:flex;align-items:baseline;gap:var(--space-2);margin-top:var(--space-2);font-size:.9rem;color:var(--color-text-muted)}.counter__n{font-weight:600;color:var(--color-text)}.counter__valid{color:var(--color-accent)}.counter__invalid{color:var(--color-danger)}.text-entry{margin-top:var(--space-3);display:flex;flex-direction:column;gap:var(--space-1)}.text-entry input{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);font-family:var(--font-mono)}.text-entry__messages{display:flex;flex-direction:column;gap:var(--space-1);color:var(--color-danger);font-size:.8rem}.text-entry__messages p{margin:0}.controls{display:flex;flex-wrap:wrap;gap:var(--space-4);align-items:flex-end}.field{display:flex;flex-direction:column;gap:var(--space-1);font-size:.85rem}.field label{color:var(--color-text-muted)}.field select,.field input[type=number]{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3)}.field--tooltip{position:relative}.field .tooltip{font-size:.75rem;color:var(--color-text-muted);max-width:220px}.error-banner{border:1px solid var(--color-danger);color:var(--color-danger);background:color-mix(in srgb,var(--color-danger) 12%,transparent);border-radius:var(--radius-md);padding:var(--space-3);font-size:.9rem}.notice-banner{border:1px solid var(--color-border);color:var(--color-text-muted);background:var(--color-bg-raised);border-radius:var(--radius-md);padding:var(--space-3);font-size:.9rem}.board{display:flex;flex-direction:column;gap:var(--space-3)}.board-row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.board-row__label{width:64px;flex-shrink:0;font-size:.8rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.board-row__cards{display:flex;gap:var(--space-1)}.board-badges{display:flex;gap:var(--space-2);flex-wrap:wrap}.badge{font-size:.75rem;padding:var(--space-1) var(--space-2);border-radius:999px;border:1px solid var(--color-border);color:var(--color-text-muted)}.badge--stay{color:var(--color-accent);border-color:var(--color-accent)}.badge--foul{color:var(--color-danger);border-color:var(--color-danger)}.badge--estimate{display:inline-block;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:999px;padding:var(--space-1) var(--space-2);font-size:.75rem;margin-bottom:var(--space-2)}.street-switch{display:flex;gap:var(--space-2);flex-wrap:wrap}.street-switch button[aria-pressed=true]{color:var(--color-accent);border-color:var(--color-accent)}.discards{display:flex;align-items:center;gap:var(--space-2);font-size:.85rem;color:var(--color-text-muted)}.score-breakdown{display:flex;flex-direction:column;gap:var(--space-1);font-size:.85rem}.score-breakdown__row{display:flex;justify-content:space-between;gap:var(--space-3)}.score-breakdown__label{color:var(--color-text-muted)}.score-breakdown__row--estimate .score-breakdown__label,.score-breakdown__row--estimate .score-breakdown__value{color:var(--color-accent)}.score-breakdown__row--total{font-weight:600;border-top:1px solid var(--color-border);padding-top:var(--space-1)}.score-breakdown__note{margin:0}.result-meta{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;color:var(--color-text-muted)}.alternatives{display:flex;flex-direction:column;gap:var(--space-2)}.alternative-row{display:flex;align-items:center;gap:var(--space-3);width:100%;text-align:left;background:var(--color-bg-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);cursor:pointer;color:var(--color-text)}.alternative-row[aria-current=true]{border-color:var(--color-accent)}.alternative-row__cards{display:flex;gap:var(--space-1);flex:1;flex-wrap:wrap}.alternative-row__exact{color:var(--color-text-muted)}.alternative-row__score{font-weight:600;color:var(--color-accent)}.zone-rows{display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-3)}.zone-row{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3)}.zone-row--active{border-color:var(--color-accent)}.zone-row__header{display:block;width:100%;text-align:left;background:none;border:none;padding:0 0 var(--space-2);font-size:.85rem;font-weight:600;color:var(--color-text-muted);cursor:pointer}.zone-row--active .zone-row__header{color:var(--color-accent)}.zone-row__label{display:block;margin-bottom:var(--space-2);font-size:.85rem;font-weight:600;color:var(--color-text-muted)}.zone-tray{display:flex;flex-wrap:wrap;gap:var(--space-2);min-height:46px}.zone-tray__empty{color:var(--color-text-muted);font-size:.8rem;align-self:center}.zone-tray__slot{border:none;background:none;padding:0;cursor:pointer}.card-tile--highlight{outline:2px solid var(--color-accent);outline-offset:1px}.endgame-table{width:100%;border-collapse:collapse;font-size:.85rem}.endgame-table th,.endgame-table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);text-align:left}.endgame-table__placed{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.endgame-table__placed-item{display:flex;align-items:center;gap:var(--space-1)}.endgame-table__row-label{font-size:.75rem;color:var(--color-text-muted);text-transform:uppercase}.tool-switch a{font-size:.85rem;color:var(--color-text-muted);text-decoration:none}.tool-switch a:hover{color:var(--color-accent)}@media (max-width: 375px){.card-tile{--card-w: 30px;--card-h: 42px;font-size:.7rem}.board-row__label{width:48px}}
