:root{
  --bg:#0b0f14;--panel:#141a22;--panel2:#1a222d;--line:#27313d;--text:#f6f8fa;--muted:#9aa7b4;
  --accent:#4ea1ff;--accent2:#2f81f7;--danger:#ff5d5d;--ok:#35c98f;--shadow:0 18px 45px rgba(0,0,0,.28)
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-height:100%}
body{padding-bottom:env(safe-area-inset-bottom)}
button,input,select{font:inherit}
button{cursor:pointer}
.hidden{display:none!important}
.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:12px;padding:16px max(16px,env(safe-area-inset-left));background:rgba(11,15,20,.88);backdrop-filter:blur(14px);border-bottom:1px solid rgba(255,255,255,.05)}
.topbar h1{font-size:24px;line-height:1;margin:0;font-weight:800;letter-spacing:-.02em;display:flex;align-items:baseline;gap:8px}.app-version{font-size:11px;font-weight:800;letter-spacing:.02em;color:var(--muted);white-space:nowrap}.subtitle{font-size:12px;color:var(--muted);margin-top:4px}.subtitle.editable-game-name{user-select:none;touch-action:manipulation;cursor:pointer}.topbar-spacer{margin-left:auto}.icon-btn{width:42px;height:42px;border-radius:14px;border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:24px}
main{width:min(100%,900px);margin:0 auto;padding:18px 16px 40px}.view{display:none}.view.active{display:block}.card{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:16px;box-shadow:var(--shadow);margin-bottom:14px}.label{display:block;font-size:13px;color:var(--muted);margin-bottom:8px}.control{width:100%;border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:14px;padding:13px 14px;outline:none;margin-top:8px}.control:focus{border-color:var(--accent)}
.section-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.section-title{font-size:18px;font-weight:800}.muted{color:var(--muted);font-size:13px;margin-top:3px}.round-add{width:52px;height:52px;border:0;border-radius:18px;background:var(--accent2);color:white;font-size:34px;line-height:1}.player-setup-list{display:flex;flex-direction:column;gap:10px;margin-top:14px}.player-input-row{display:grid;grid-template-columns:1fr 44px;gap:10px}.player-input-row button{border:1px solid var(--line);background:var(--panel2);color:var(--danger);border-radius:14px;font-size:20px}
.home-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}.big{min-height:58px}.primary,.secondary,.danger{border:0;border-radius:16px;padding:13px 16px;font-weight:800}.primary{background:var(--accent2);color:white}.secondary{background:var(--panel2);color:var(--text);border:1px solid var(--line)}.danger{background:rgba(255,93,93,.14);color:#ff7b7b;border:1px solid rgba(255,93,93,.26)}.full{width:100%;margin-top:18px;min-height:54px}
.score-header{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;padding-bottom:10px}.player-score-card{min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:9px 4px;text-align:center;user-select:none;touch-action:manipulation;overflow:hidden}.player-name{font-size:12px;font-weight:800;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.total-score{font-size:22px;line-height:1;font-weight:900;margin-top:5px}.dealer-badge{display:inline-block;max-width:100%;margin-top:6px;padding:3px 5px;border-radius:999px;font-size:8px;line-height:1.05;font-weight:900;letter-spacing:.02em;background:rgba(78,161,255,.16);color:#8cc6ff;white-space:normal}.dealer-badge.tamalou{background:rgba(53,201,143,.15);color:#68e1b3}
.game-toolbar{display:grid;grid-template-columns:1.2fr .9fr .9fr;gap:8px;margin:6px 0 16px}.rounds-wrap{display:flex;flex-direction:column;gap:8px}.round-row{display:grid;grid-template-columns:52px minmax(0,1fr);gap:7px;align-items:stretch;user-select:none}.round-number{background:var(--panel2);border:1px solid var(--line);border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:900;color:var(--muted)}.round-scores{min-width:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}.round-score-cell{min-width:0;padding:8px 3px;text-align:center;background:var(--panel)}.round-score-value{font-size:15px;line-height:1.05;font-weight:900}.round-score-name{font-size:9px;line-height:1.1;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px}
.modal{position:fixed;inset:0;z-index:100;display:flex;align-items:flex-end;justify-content:center}.modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.62);backdrop-filter:blur(3px)}.modal-sheet{position:relative;width:min(100%,700px);max-height:90vh;overflow:auto;border-radius:24px 24px 0 0;background:#10161e;border:1px solid var(--line);padding:18px 16px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -20px 60px rgba(0,0,0,.45)}.modal-title{font-size:21px;font-weight:900;margin:0 0 14px}.modal-actions{display:grid;gap:10px;margin-top:14px}.menu-btn{width:100%;text-align:left;padding:15px;border-radius:15px;border:1px solid var(--line);background:var(--panel2);color:var(--text);font-weight:700}.menu-btn.danger-text{color:#ff7b7b}
.round-editor{display:flex;flex-direction:column;gap:16px}.score-editor-player{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:14px}.score-editor-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.score-editor-name{font-weight:900}.score-editor-value{font-size:28px;font-weight:900;min-width:80px;text-align:right}.score-pad{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}.score-pad button{padding:12px 6px;border:1px solid var(--line);border-radius:13px;background:var(--panel2);color:var(--text);font-weight:900}.score-pad button.plus{background:rgba(53,201,143,.12);color:#68e1b3}.score-pad button.minus{background:rgba(255,93,93,.11);color:#ff8585}.editor-footer{display:grid;grid-template-columns:1fr 1fr;gap:10px;position:sticky;bottom:0;padding-top:10px;background:#10161e}
.reorder-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}.reorder-help{margin-bottom:4px}.reorder-item{display:grid;grid-template-columns:52px 1fr;gap:8px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:15px;padding:8px;transition:transform .12s ease,opacity .12s ease}.reorder-item .handle{display:flex;align-items:center;justify-content:center;height:46px;border-radius:12px;background:var(--panel2);text-align:center;color:var(--muted);font-size:25px;font-weight:900;touch-action:none;user-select:none;cursor:grab}.reorder-item.drag-source{opacity:.28}.reorder-name{font-weight:800}.drag-ghost{position:fixed;left:0;top:0;z-index:300;pointer-events:none;background:#e8eef5;color:#111;padding:12px 16px;border-radius:14px;font-weight:900;box-shadow:0 16px 40px rgba(0,0,0,.45);white-space:nowrap;will-change:transform}.replay-question{font-size:17px;font-weight:800;margin:8px 0 10px}
.history-list{display:flex;flex-direction:column;gap:10px}.history-title{margin-bottom:14px}.history-card{width:100%;text-align:left;background:var(--panel);border:1px solid var(--line);color:var(--text);border-radius:18px;padding:15px;touch-action:pan-y;user-select:none;-webkit-user-select:none;transition:transform .12s ease,border-color .12s ease,background .12s ease}.history-card.long-press-arming{border-color:rgba(78,161,255,.55);background:#182230;transform:scale(.995)}.history-card .date{font-size:12px;color:var(--muted)}.history-card .game{font-size:18px;font-weight:900;margin-top:4px}.history-card .players{font-size:13px;color:#c5ced8;margin-top:5px;line-height:1.45}.history-card .players strong{color:var(--text)}.history-empty{text-align:center;color:var(--muted);padding:40px 10px}
.detail-card{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:16px;margin-bottom:14px}.detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.detail-player{min-width:0;background:var(--panel2);border-radius:12px;padding:9px 4px;text-align:center;overflow:hidden}.detail-player .n{font-size:10px;line-height:1.15;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.detail-player .v{font-size:20px;line-height:1;font-weight:900;margin-top:5px}.detail-round{margin-top:10px}
.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:200;background:#e8eef5;color:#111;padding:10px 14px;border-radius:999px;font-weight:800;box-shadow:var(--shadow);max-width:90%;text-align:center}
@media(max-width:480px){main{padding-left:12px;padding-right:12px}.home-actions{grid-template-columns:1fr}.score-pad{grid-template-columns:repeat(4,1fr)}.round-row{grid-template-columns:52px 1fr}.topbar h1{font-size:22px}}

.player-stepper{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding-bottom:10px;overflow:visible}.player-chip{min-width:0;overflow:hidden;border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:14px;padding:9px 4px;white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:800}.player-chip span{display:block;font-size:11px;color:var(--muted);margin-top:2px}.player-chip.active{border-color:var(--accent);background:rgba(78,161,255,.12)}.single-score-editor{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:18px;text-align:center}.big-name{font-size:20px}.score-editor-value.giant{font-size:54px;line-height:1.1;text-align:center;margin:10px 0 16px}.score-pad.large button{min-height:52px;font-size:17px}.player-nav{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin-top:14px}.player-nav button:disabled,.reorder-item button:disabled{opacity:.3;cursor:default}

.round-score-cell.did-not-play .round-score-value{color:var(--muted);font-weight:700}
@media(max-width:520px){.game-toolbar .primary,.game-toolbar .secondary{padding:12px 8px;font-size:13px}}


/* Saisie d'un joueur en cours de partie : la boîte reste dans la zone visible au-dessus du clavier. */
.modal.keyboard-safe-modal{
  inset:var(--visual-viewport-offset-top,0px) 0 auto 0;
  height:var(--visual-viewport-height,100%);
  box-sizing:border-box;
  align-items:flex-start;
  padding-top:max(56px,calc(env(safe-area-inset-top) + 36px));
}
.modal.keyboard-safe-modal .modal-sheet{
  width:min(calc(100% - 24px),700px);
  max-height:calc(var(--visual-viewport-height,100%) - 76px);
  border-radius:24px;
  padding:18px 16px;
  overflow:auto;
}
.modal.keyboard-safe-modal .keyboard-safe-form{margin-top:14px}
.modal.keyboard-safe-modal .editor-footer{position:static;margin-top:10px;padding-top:0}


.finish-under-toolbar{margin-top:-6px;margin-bottom:16px;background:#d83a3a;color:#fff;border-color:#ef5a5a}

/* v2.2 - parties en cours dans l'historique */
.history-card.current-game-card{border-color:rgba(53,201,143,.34);background:linear-gradient(180deg,rgba(53,201,143,.07),var(--panel))}
.history-card-main{min-width:0}
.current-badge{display:inline-block;padding:3px 7px;border-radius:999px;background:rgba(53,201,143,.14);color:#68e1b3;font-size:9px;font-weight:900;letter-spacing:.04em;vertical-align:1px}
.continue-game-btn{width:100%;margin-top:12px;min-height:46px;border:1px solid rgba(53,201,143,.34);border-radius:13px;background:rgba(53,201,143,.13);color:#75e7ba;font-weight:900}
.continue-detail-btn{margin-top:0;margin-bottom:14px;background:rgba(53,201,143,.16);color:#75e7ba;border-color:rgba(53,201,143,.34)}

/* v2.3 - actions sur une partie de l'historique */
.history-action-stack{display:grid;gap:10px;margin-top:18px}
.history-action-stack .full{margin-top:0}
