*{box-sizing:border-box}body{margin:0;font-family:system-ui,Segoe UI,Arial;background:#f5f7f8;color:#1d2529}header{display:flex;justify-content:space-between;align-items:center;padding:18px 5vw;background:#17252a;color:white}.brand b{font-size:27px;letter-spacing:2px}.brand small{display:block;opacity:.7}nav a{color:white;text-decoration:none;margin-left:20px}main{max-width:1050px;margin:auto;padding:45px 24px}.hero{text-align:center;padding:55px 10px}.hero h1{font-size:48px;margin:0 0 12px}.btn,.gamechoices button{display:inline-block;border:0;border-radius:8px;background:#245b62;color:#fff;padding:12px 20px;text-decoration:none;font-weight:650;cursor:pointer}.btn.alt{background:#fff;color:#245b62;border:1px solid #245b62}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.cards article{background:white;padding:24px;border-radius:12px;box-shadow:0 3px 14px #0001}.narrow{max-width:520px}label{display:block;margin:15px 0}input{display:block;width:100%;padding:12px;margin-top:6px;border:1px solid #ccd4d6;border-radius:7px}.notice{padding:12px;background:#fff5cf;border-radius:8px}.gamechoices{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0}.board{display:grid;grid-template-columns:repeat(15,34px);gap:2px;width:max-content;background:#ccd5d6;padding:4px}.cell{width:34px;height:34px;background:white;display:grid;place-items:center;font-size:11px}.cell.bonus{background:#e5ecee;font-weight:bold}.rack{display:flex;gap:7px;margin:22px 0}.tile{width:46px;height:52px;border:1px solid #b08b52;border-radius:6px;background:#f2d59c;font-size:22px;font-weight:bold;cursor:grab}.hint{color:#667}footer{text-align:center;padding:30px;color:#667}@media(max-width:700px){.cards{grid-template-columns:1fr}header{display:block}nav{margin-top:12px}nav a{margin:0 12px 0 0}.board{grid-template-columns:repeat(15,22px)}.cell{width:22px;height:22px}.hero h1{font-size:36px}}
.success{padding:12px 14px;background:#e7f5ec;border-radius:8px}
.empty{background:#fff;padding:22px;border-radius:12px;box-shadow:0 3px 14px #0001}
.dashboard-actions{margin:0 0 28px}
.game-list{display:grid;gap:9px}.game-row{display:flex;justify-content:space-between;gap:20px;background:#fff;padding:15px 18px;border-radius:9px;text-decoration:none;color:inherit;box-shadow:0 2px 8px #0001}
.choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:850px}.choice-grid form{margin:0}.choice-card{width:100%;height:100%;text-align:left;border:1px solid #ccd4d6;background:#fff;border-radius:12px;padding:22px;cursor:pointer;color:#1d2529}.choice-card:hover{border-color:#245b62}.choice-card strong,.choice-card span{display:block}.choice-card strong{font-size:18px;margin-bottom:7px}.choice-card span{color:#667;line-height:1.4}
.game-head{display:flex;align-items:center;justify-content:space-between;gap:20px}.scorebox{background:#fff;padding:12px 18px;border-radius:10px}.scorebox strong{font-size:25px;margin-left:8px}
.rack-actions{display:flex;flex-wrap:wrap;gap:10px}.btn:disabled{opacity:.45;cursor:not-allowed}
.cell.bonus2{background:#dfeef0}.cell.bonus3{background:#d8e3e5}.cell.starter-tile{background:#f2d59c;border:1px solid #b08b52;font-size:18px;font-weight:700}
@media(max-width:700px){.choice-grid{grid-template-columns:1fr}.game-row,.game-head{display:block}.scorebox{margin-top:10px}.board{overflow:auto;max-width:100%}}

.choice-card.static{cursor:default}
.choice-card.static:hover{border-color:#ccd4d6}
.inline-form{margin-top:15px;display:flex;gap:8px;align-items:flex-end}
.inline-form input{margin:0;min-width:0}
.inline-form .btn{white-space:nowrap}
.invite-link{background:#fff;padding:18px;border-radius:10px;margin:18px 0;box-shadow:0 2px 8px #0001}
.invite-link input{font-family:monospace}
.invite-list{display:grid;gap:10px;margin-bottom:30px}
.invite-row{background:#fff;border-radius:10px;padding:15px 18px;display:flex;justify-content:space-between;align-items:center;gap:20px;box-shadow:0 2px 8px #0001}
.invite-actions{display:flex;gap:8px;align-items:center}
.invite-actions form{margin:0}
.game-row small{display:block;color:#667;margin-top:4px}
@media(max-width:700px){.inline-form,.invite-row,.invite-actions{display:block}.inline-form .btn{margin-top:8px}.invite-actions .btn{margin-top:8px}}

.play-panel{margin-top:28px;background:#fff;padding:20px;border-radius:12px;box-shadow:0 2px 8px #0001}
.play-form{display:grid;grid-template-columns:2fr 1fr 1fr 1fr auto;gap:10px;align-items:end}
.play-form label{margin:0}.play-form input,.play-form select{width:100%;padding:10px;border:1px solid #ccd4d6;border-radius:7px;margin-top:6px}
.exchange-form{display:flex;gap:10px;align-items:end}.exchange-form label{flex:1;margin:0}
.played-tile{background:#f6e7bd!important;border:1px solid #b08b52;font-size:18px!important;font-weight:700}
@media(max-width:850px){.play-form{grid-template-columns:1fr 1fr}.play-form .btn{grid-column:1/-1}.exchange-form{display:block}.exchange-form .btn{margin-top:8px}}

.scoreboard{display:flex;align-items:stretch;gap:8px;background:#fff;padding:8px;border-radius:12px;box-shadow:0 2px 8px #0001}
.score-player{min-width:120px;padding:10px 14px;border-radius:9px;text-align:center}
.score-player span{display:block;font-weight:700;margin-bottom:3px}
.score-player strong{display:block;font-size:28px;line-height:1}
.score-player.active-player{outline:2px solid #245b62}
.score-separator{display:grid;place-items:center;font-size:24px;font-weight:700;color:#667}
.game-score{text-align:right}
@media(max-width:700px){
  .scoreboard{margin-top:12px;width:100%;justify-content:center}
  .score-player{min-width:100px}
  .game-score{text-align:left;margin-top:7px}
}

button:disabled,input:disabled,select:disabled{opacity:.55;cursor:not-allowed}

.game-layout{display:grid;grid-template-columns:max-content minmax(260px,1fr);gap:28px;align-items:start}
.game-side{background:#fff;padding:18px;border-radius:12px;box-shadow:0 2px 8px #0001}
.game-side h2:first-child{margin-top:0}
.rack{flex-wrap:wrap}
.tile-selected{outline:3px solid #245b62;transform:translateY(-3px)}
.tile-used{opacity:.3}
.pending-tile{background:#fff0b8!important;border:2px dashed #8b6b2e!important;font-size:18px!important;font-weight:700}
.wide{width:100%;margin-top:10px}
.board .cell{position:relative}
.board .cell:hover{outline:1px solid #245b62;outline-offset:-1px}
@media(max-width:900px){
  .game-layout{grid-template-columns:1fr}
  .game-side{max-width:520px}
}

.rule-note{margin:12px 0;padding:10px 12px;border-left:4px solid currentColor;background:#fff}

.game-head{justify-content:center!important}
.score-area{display:flex;flex-direction:column;align-items:center;gap:7px;width:100%}
.scoreboard{margin:0 auto}
.score-player{border:2px solid transparent;transition:border-color .15s,background .15s,box-shadow .15s}
.score-player.active-player{
  outline:none!important;
  border:3px solid #1f5960;
  background:#dceff1;
  box-shadow:0 0 0 2px rgba(31,89,96,.12);
}
.tiles-left{text-align:center;font-size:14px;padding:2px 8px}

.game-tabs{display:flex;justify-content:center;gap:4px;margin:8px auto 14px}
.game-tab{border:0;border-radius:9px;padding:9px 22px;font-weight:700;background:#e1e5e8;cursor:pointer}
.game-tab.active{background:#245b62;color:#fff}
.game-view{display:none}.game-view.active{display:block}
.turn-stats{max-width:800px;margin:auto}
#scoreChart{width:100%;height:auto;background:#f3f5f6;border-radius:14px}
.turn-list{display:grid;gap:9px;margin-top:14px}
.turn-row{display:grid;grid-template-columns:42px 1fr 60px;gap:10px;align-items:center;background:#fff;border-radius:12px;padding:12px;box-shadow:0 1px 5px #0001}
.turn-number{text-align:center;font-size:18px}.turn-info{display:grid;gap:4px}.turn-info span{font-size:14px}
.turn-total{text-align:right;font-size:22px;font-weight:800}
@media(max-width:700px){
  main{padding:8px!important}
  .game-head{position:sticky;top:0;z-index:20;background:#f3f5f6;padding:6px 0}
  .scoreboard{width:100%;justify-content:center}
  .score-player{min-width:105px;padding:7px 10px}
  .score-player strong{font-size:23px}
  .game-tabs{margin:5px auto 8px}
  .game-tab{flex:1;max-width:180px}
  .game-layout{display:flex!important;flex-direction:column;gap:8px!important}
  .board{max-width:100%;overflow:auto}
  .game-side{width:100%;box-sizing:border-box;padding:8px!important;box-shadow:none!important}
  .game-side h2{display:none}
  .rack{justify-content:center;position:sticky;bottom:54px;z-index:15;background:#fff;padding:7px 3px;border-radius:8px}
  .rack-actions{display:flex;gap:5px}
  .rack-actions .btn{flex:1}
  #playForm,#exchangeForm{display:inline}
  .game-side{padding-bottom:64px!important}
  .game-side form .wide{width:100%}
  .hint{display:none}
  .turn-row{grid-template-columns:30px 1fr 48px;padding:10px 8px}
}

.tile[draggable="true"]{cursor:grab;touch-action:none}
.tile.dragging{opacity:.45;cursor:grabbing}
.board .cell.drop-target{outline:3px solid #245b62!important;outline-offset:-3px;background:#e5f1f2!important}

.game-group{margin-top:28px}
.game-group h2{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.group-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;border-radius:12px;background:#dfe5e7;font-size:13px}
.my-turn-group .game-row{border-left:5px solid #245b62}
.game-group-empty{padding:12px 14px;background:#fff;border-radius:10px;color:#687078}
.game-row span:first-child strong{font-size:16px}

/* v1.5 play layout */
.play-stack{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%}
.board-wrap{width:100%;display:flex;justify-content:center;overflow:auto}
.play-controls{width:min(100%,760px);background:transparent;padding:0}
.play-controls .rack{display:flex;justify-content:center;flex-wrap:nowrap;gap:7px;background:transparent;padding:4px 0;position:static}
.bottom-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px}
.bottom-actions form{margin:0}
.bottom-actions .btn{width:100%;height:44px;margin:0}
.play-action{font-weight:800}
#boardView .hint,#boardView .game-side,#boardView .game-side h2{display:none!important}

/* Turstatistik: same identity as chart, soft backgrounds */
.turn-row.player-one{background:rgba(40,122,134,.13);border-left:5px solid #287a86}
.turn-row.player-two{background:rgba(180,91,67,.13);border-left:5px solid #b45b43}
.turn-number{opacity:.62;font-size:14px}

@media(max-width:700px){
  .play-stack{gap:6px}
  .board-wrap{justify-content:flex-start}
  .play-controls{position:sticky;bottom:0;z-index:18;background:#f3f5f6;padding:5px 0 7px}
  .play-controls .rack{position:static!important;bottom:auto!important;padding:4px 2px!important}
  .bottom-actions{grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}
  .bottom-actions .btn{font-size:12px;padding:7px 3px;height:40px}
  .tile{min-width:36px!important;width:36px!important;height:42px!important;padding:0!important}
}

.pending-tile[draggable="true"]{cursor:grab}
.pending-tile.dragging-pending{opacity:.45;cursor:grabbing}
.rack.rack-drop-target{outline:3px dashed #245b62;outline-offset:3px;background:#e7f2f3!important}
.bingo-mark{font-weight:800}
.stats-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}
.stats-cards article{background:#fff;padding:20px;border-radius:12px;box-shadow:0 2px 8px #0001}
.stats-cards h2{font-size:30px;margin:0 0 4px}

.tile-place-selected{outline:3px solid #b08b52;transform:translateY(-4px)}
.rules-page{max-width:850px}
.rules-page>h1{margin-bottom:24px}
.rules-card{background:#fff;padding:18px 22px;border-radius:12px;margin:12px 0;box-shadow:0 2px 8px #0001}
.rules-card h2{margin:0 0 8px}
.rules-card p{margin:0;line-height:1.55}
.rules-link{text-align:center;margin-top:20px}
.rules-link a{font-weight:700;color:#245b62}
@media(max-width:700px){
  .tile-place-selected{outline-width:4px}
  .rules-page{padding:16px!important}
  .rules-card{padding:15px}
}

.dictionary-tools{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:22px 0}
.dictionary-tools form{background:#fff;padding:18px;border-radius:12px;box-shadow:0 2px 8px #0001}
.dictionary-add .btn,.dictionary-search .btn{margin-right:6px}
.dictionary-list{display:grid;gap:7px}
.dictionary-row{display:grid;grid-template-columns:1fr 110px auto;gap:12px;align-items:center;background:#fff;padding:11px 14px;border-radius:9px}
.dictionary-row small{display:block;color:#667;margin-top:3px}
.dict-status{font-size:12px;font-weight:700;text-transform:uppercase}
.dict-status.approved{color:#1f6b3d}.dict-status.rejected{color:#a33}.dict-status.standard{color:#456}
.mini-btn{border:1px solid #ccd4d6;background:#fff;border-radius:6px;padding:6px 8px;cursor:pointer}
@media(max-width:700px){.dictionary-tools{grid-template-columns:1fr}.dictionary-row{grid-template-columns:1fr auto}.dictionary-row form{grid-column:1/-1}}

.import-summary{background:#fff;padding:18px 20px;border-radius:12px;margin:18px 0;box-shadow:0 2px 8px #0001}
.import-summary h2{margin-top:0}
.import-summary .stats-cards{margin:15px 0}
.import-summary code{font-family:ui-monospace,Consolas,monospace}

.latest-move-tile{
  background:#d8eef2!important;
  border:2px solid #287a86!important;
  box-shadow:inset 0 0 0 1px rgba(40,122,134,.18);
}
.latest-move-tile.starter-tile,
.latest-move-tile.played-tile{
  background:#d8eef2!important;
}
.pending-tile.latest-move-tile{
  background:#fff0b8!important;
  border:2px dashed #8b6b2e!important;
}
.last-move-note{
  width:min(100%,760px);
  margin:0 auto 10px;
  padding:8px 12px;
  border-radius:9px;
  background:#eef6f7;
  text-align:center;
  font-size:14px;
}
@media(max-width:700px){
  .last-move-note{font-size:12px;padding:6px 8px;margin-bottom:6px}
}

/* v2.0.1: extra-visible latest move marker */
.board .cell.latest-move-tile{
  background:#9fd7df!important;
  border:3px solid #176a75!important;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.55),0 0 0 1px rgba(23,106,117,.25)!important;
  font-weight:800!important;
}

/* v2.2: stronger latest-move marker */
.board .cell.latest-move-tile{
  background:#ffd86b!important;
  border:3px solid #d97706!important;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.55),0 0 0 1px rgba(217,119,6,.28)!important;
  color:#2a2418!important;
  font-weight:800!important;
}
.board .cell.latest-move-tile.starter-tile,
.board .cell.latest-move-tile.played-tile{
  background:#ffd86b!important;
}

.game-result{max-width:760px;margin:12px auto 18px;padding:18px 20px;background:#fff4cf;border:2px solid #d99a20;border-radius:12px;text-align:center}
.game-result h2{margin:0 0 8px}.game-result p{margin:0;line-height:1.5}
.private-note{background:#eef6f7;border-radius:9px;padding:10px 12px}
.head-to-head{display:grid;gap:8px;margin:12px 0 30px}
.h2h-row{display:grid;grid-template-columns:minmax(130px,1fr) repeat(4,auto);gap:18px;align-items:center;background:#fff;padding:12px 15px;border-radius:9px;box-shadow:0 1px 5px #0001}
@media(max-width:700px){.h2h-row{grid-template-columns:1fr 1fr;gap:7px 12px}.h2h-row strong{grid-column:1/-1}}

.profile-card{display:flex;gap:18px;align-items:center;background:#fff;padding:18px;border-radius:12px;margin:12px 0 20px}
.avatar-large{width:96px;height:96px;object-fit:cover;border-radius:22px;border:3px solid #d97706;background:#fff4cf}
.profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.profile-grid form{display:grid;gap:10px}
.social-row{display:flex;justify-content:space-between;gap:15px;align-items:center;background:#fff;padding:12px 15px;border-radius:9px;margin:7px 0}.social-row form,.social-actions{display:flex;gap:8px}
.friends-invite{background:#fff4cf;border:1px solid #e4bd5d;border-radius:12px;padding:14px;margin:12px 0 20px}.friend-chips{display:flex;flex-wrap:wrap;gap:8px}.friend-chip{border:1px solid #d97706;background:#fff;padding:9px 13px;border-radius:999px;cursor:pointer}.friend-chip.selected{background:#ffd86b}
.result-actions{display:flex;justify-content:center;gap:10px;margin-top:14px}.report-card{background:#fff;padding:16px;border-radius:10px;margin:10px 0}.report-card form{display:grid;gap:10px}
textarea,select,input[type=file]{width:100%;box-sizing:border-box;padding:9px}
@media(max-width:700px){.profile-grid{grid-template-columns:1fr}.social-row{align-items:flex-start;flex-direction:column}.result-actions{flex-direction:column}}

.new-invitations{
  margin:20px 0 30px;
  padding:16px;
  border:2px solid #d97706;
  background:#fff4cf;
  border-radius:14px;
  box-shadow:0 4px 15px rgba(217,119,6,.16);
}
.invitation-heading{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.invitation-heading h2{margin:0}
.new-badge{background:#d97706;color:#fff;font-weight:800;font-size:12px;border-radius:999px;padding:5px 9px}
.invite-list.prominent{display:grid;gap:10px}
.new-invite-row{
  display:grid;
  grid-template-columns:52px 1fr auto;
  gap:12px;
  align-items:center;
  background:#fff;
  border:1px solid #efc66e;
  border-radius:11px;
  padding:12px;
}
.invite-avatar{width:48px;height:48px;object-fit:cover;border-radius:13px;background:#fff4cf;border:2px solid #d97706}
.invite-copy{display:grid;gap:3px}
.invite-copy>strong{color:#b85f05;text-transform:uppercase;font-size:12px;letter-spacing:.04em}
.group-help{margin:-4px 0 10px;color:#667;font-size:14px}
.outgoing-invites .game-row{border-left:4px solid #d6a33b}
@media(max-width:700px){
  .new-invite-row{grid-template-columns:44px 1fr}
  .invite-avatar{width:40px;height:40px}
  .new-invite-row .invite-actions{grid-column:1/-1}
  .new-invite-row .invite-actions .btn{width:100%;text-align:center;box-sizing:border-box}
}

.rich-game-row{display:grid;grid-template-columns:58px 1fr auto;gap:12px;align-items:center}
.game-opponent-avatar{width:52px;height:52px;object-fit:cover;border-radius:14px;border:2px solid #d8a331;background:#fff4cf}
.game-card-main{display:grid;gap:2px}.game-card-main small{display:block}
.deadline{font-weight:700}.deadline-expired{font-weight:800;color:#a52a2a}
.turn-avatar{width:42px;height:42px;object-fit:cover;border-radius:12px;flex:0 0 42px;border:2px solid rgba(0,0,0,.12)}
@media(max-width:700px){.rich-game-row{grid-template-columns:46px 1fr auto}.game-opponent-avatar{width:42px;height:42px}}

/* v2.7: compact Wordfeud-like turn statistics */
.turn-list{display:grid;gap:9px}
.turn-row{
  min-height:0!important;
  display:grid!important;
  grid-template-columns:34px 48px minmax(0,1fr) 64px!important;
  gap:10px!important;
  align-items:center!important;
  padding:11px 14px!important;
}
.turn-number{align-self:center!important;text-align:center!important}
.turn-avatar{width:44px!important;height:44px!important;border-radius:12px!important;margin:0!important}
.turn-info{display:grid!important;gap:2px!important;min-width:0!important}
.turn-info strong,.turn-info span{position:static!important;width:auto!important;max-width:none!important;text-align:left!important}
.turn-total{align-self:center!important;text-align:right!important;font-size:22px!important;font-weight:800!important}
.bingo-mark{display:inline-block!important;width:max-content!important}
@media(max-width:600px){
 .turn-row{grid-template-columns:25px 40px minmax(0,1fr) 48px!important;padding:9px!important;gap:7px!important}
 .turn-avatar{width:38px!important;height:38px!important}
 .turn-info span{font-size:13px!important}
 .turn-total{font-size:18px!important}
}

/* Letter values */
.tile,.starter-tile,.played-tile,.pending-tile{position:relative}
.tile-letter{line-height:1}
.tile-value{
 position:absolute;right:3px;bottom:1px;font-size:9px!important;font-weight:700;line-height:1;
 opacity:.75;color:inherit;
}
.cell .tile-value{right:2px;bottom:1px;font-size:7px!important}
.invalid-word-tile{
 background:#ffd7d7!important;
 border:3px solid #c62828!important;
 box-shadow:inset 0 0 0 1px #fff,0 0 0 1px rgba(198,40,40,.25)!important;
 color:#8b0000!important;
}

.favorite-player{display:flex;align-items:center;gap:10px}.favorite-avatar{width:38px;height:38px;object-fit:cover;border-radius:10px}
.favorite-actions{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.inline-form{display:inline}.link-button{border:0;background:none;padding:0;color:#1f6670;text-decoration:underline;cursor:pointer;font:inherit}

/* v2.9 stable admin navigation */
.admin-header .admin-nav{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.admin-header .admin-nav a{white-space:nowrap}
.admin-header .admin-nav a.active{background:rgba(255,255,255,.18);font-weight:800;border-radius:7px}
.dictionary-admin-panel{background:#fff;padding:18px;border-radius:12px;margin:18px 0;box-shadow:0 2px 8px #0001}
.dictionary-add-full,.dictionary-filter{display:grid;grid-template-columns:minmax(160px,1.5fr) minmax(140px,1fr) auto auto;gap:10px;align-items:end}
.dictionary-add-full .check-label,.dictionary-edit-row .check-label{display:flex;align-items:center;gap:7px;padding-bottom:8px}
.dictionary-editor-list{display:grid;gap:8px;margin-top:14px}
.dictionary-edit-row{display:grid;grid-template-columns:minmax(130px,1.2fr) 130px minmax(160px,1fr) 100px minmax(250px,auto);gap:9px;align-items:end;background:#f8faf9;border:1px solid #e2e8e5;border-radius:9px;padding:10px}
.dictionary-edit-row label{margin:0}
.dictionary-edit-row input,.dictionary-edit-row select{margin-top:4px}
.dictionary-row-actions{display:flex;gap:5px;flex-wrap:wrap;align-items:center;padding-bottom:1px}
.mini-btn.primary{font-weight:800}
.mini-btn.danger{border-color:#c55;color:#a22}
.pagination{display:flex;justify-content:center;align-items:center;gap:18px;margin:18px 0 4px}
.pagination a{font-weight:700}
@media(max-width:900px){
 .dictionary-add-full,.dictionary-filter{grid-template-columns:1fr 1fr}
 .dictionary-edit-row{grid-template-columns:1fr 1fr}
 .dictionary-row-actions{grid-column:1/-1}
}
@media(max-width:560px){
 .dictionary-add-full,.dictionary-filter,.dictionary-edit-row{grid-template-columns:1fr}
 .dictionary-row-actions{grid-column:auto}
}

/* v3.0: per-user removal of finished games */
.rich-game-row{position:relative}
.game-row-link{
  display:grid;
  grid-template-columns:58px 1fr auto;
  gap:12px;
  align-items:center;
  flex:1;
  min-width:0;
  color:inherit;
  text-decoration:none;
}
.hide-game-form{margin-left:auto;padding-left:10px}
@media(max-width:700px){
  .game-row-link{grid-template-columns:46px 1fr auto}
  .rich-game-row{align-items:stretch}
  .hide-game-form{padding:8px 0 0;margin:0;width:100%}
  .hide-game-form button{width:100%}
}

/* v3.1: repair Mine spil card layout after v3.0 wrapper change */
.game-list .rich-game-row{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:stretch!important;
  gap:12px!important;
  width:100%!important;
  padding:14px 16px!important;
}
.game-list .game-row-link{
  display:grid!important;
  grid-template-columns:58px minmax(0,1fr) auto!important;
  align-items:center!important;
  gap:14px!important;
  flex:1 1 auto!important;
  width:auto!important;
  min-width:0!important;
}
.game-list .game-card-main{
  display:flex!important;
  flex-direction:column!important;
  min-width:0!important;
  width:auto!important;
}
.game-list .game-card-main strong,
.game-list .game-card-main small{
  display:block!important;
  width:auto!important;
  max-width:none!important;
  white-space:normal!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
  position:static!important;
}
.game-list .game-score{
  min-width:72px!important;
  text-align:right!important;
  margin:0!important;
  white-space:nowrap!important;
}
.game-list .hide-game-form{
  flex:0 0 auto!important;
  margin:0 0 0 8px!important;
  padding:0!important;
}
.computer-action{
  padding:12px 14px;
  background:#e7f3f7;
  border-left:4px solid #245b62;
  border-radius:8px;
}
@media(max-width:700px){
  .game-list .rich-game-row{display:block!important}
  .game-list .game-row-link{grid-template-columns:46px minmax(0,1fr) auto!important}
  .game-list .game-score{text-align:right!important}
  .game-list .hide-game-form{margin-top:10px!important}
}

/* v3.2: tydelig overgang mellem spillerens og computerens tur */
.computer-thinking{
  width:min(100%,760px);
  margin:12px auto 16px;
  padding:14px 18px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:14px;
  background:#eef6f7;
  border:2px solid #8fb9bf;
  border-radius:12px;
  box-shadow:0 2px 8px rgba(0,0,0,.06);
}
.computer-thinking-icon{font-size:30px;line-height:1}
.computer-thinking div:last-child{display:grid;gap:3px}
.computer-thinking strong{font-size:15px}
.computer-thinking span{font-size:14px;color:#53686c;font-weight:700}
.computer-thinking span::after{
  content:'';
  display:inline-block;
  width:1.4em;
  text-align:left;
  animation:lexundo-thinking 1.2s steps(4,end) infinite;
}
@keyframes lexundo-thinking{
  0%{content:''}
  25%{content:'.'}
  50%{content:'..'}
  75%,100%{content:'...'}
}

/* v3.5: modstanderens/computerens holder er privat */
.computer-rack-status{display:flex;align-items:center;justify-content:center;gap:9px;margin-top:7px;font-size:13px;color:#52676a}
.hidden-tiles{display:flex;gap:3px}
.hidden-tiles i{display:grid;place-items:center;width:19px;height:23px;border-radius:4px;background:#d7ddd9;border:1px solid #aeb8b2;color:#7c8981;font-style:normal;font-weight:800;font-size:11px}
.computer-rack-status strong{white-space:nowrap}

/* v3.7 Cookie- og privatlivshåndtering */
.cookie-banner[hidden],.cookie-modal[hidden]{display:none!important}
.cookie-banner{position:fixed;left:0;right:0;bottom:0;z-index:10000;padding:14px;background:rgba(23,37,42,.98);color:#fff;box-shadow:0 -4px 20px #0004}
.cookie-banner-inner{max-width:1100px;margin:auto;display:flex;align-items:center;gap:22px;justify-content:space-between}
.cookie-copy{max-width:720px}.cookie-copy strong{font-size:18px}.cookie-copy p{margin:5px 0 6px;line-height:1.45}.cookie-copy a{color:#d9f3f6}
.cookie-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.cookie-settings-link{background:none;border:0;color:#d9f3f6;text-decoration:underline;cursor:pointer;padding:8px}
.cookie-modal{position:fixed;inset:0;z-index:10020;display:grid;place-items:center;padding:20px}
.cookie-modal-backdrop{position:absolute;inset:0;background:#0009}
.cookie-modal-card{position:relative;z-index:1;width:min(650px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:14px;padding:24px;box-shadow:0 15px 55px #0007}
.cookie-modal-close{position:absolute;right:13px;top:9px;border:0;background:none;font-size:29px;cursor:pointer}
.cookie-setting-row{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:center;padding:15px 0;border-top:1px solid #e2e7e8}
.cookie-setting-row p{margin:4px 0;color:#667}
.cookie-always-on{font-weight:800;color:#27656d}
.cookie-switch{margin:0;position:relative;width:48px;height:26px}.cookie-switch input{position:absolute;opacity:0}
.cookie-switch span{position:absolute;inset:0;background:#bbc4c6;border-radius:999px;cursor:pointer;transition:.2s}
.cookie-switch span:before{content:'';position:absolute;width:20px;height:20px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 3px #0004}
.cookie-switch input:checked+span{background:#245b62}.cookie-switch input:checked+span:before{transform:translateX(22px)}
.cookie-modal-actions{display:flex;align-items:center;gap:14px;justify-content:flex-end;margin-top:18px}
.cookie-preferences-button{position:fixed;right:12px;bottom:12px;z-index:9000;border:1px solid #8d999b;background:#fff;color:#31464a;border-radius:999px;padding:7px 11px;font-size:12px;cursor:pointer;box-shadow:0 2px 8px #0002}
.cookie-banner:not([hidden])~.cookie-preferences-button{display:none}
body.cookie-modal-open{overflow:hidden}
.privacy-page{max-width:900px}.policy-updated{color:#667}
.policy-table-wrap{overflow:auto}.policy-table{width:100%;border-collapse:collapse;background:#fff}.policy-table th,.policy-table td{padding:10px;border:1px solid #dce3e4;text-align:left;vertical-align:top}
footer a{color:inherit}
@media(max-width:760px){
 .cookie-banner-inner{display:block}.cookie-actions{justify-content:flex-start;margin-top:12px}
 .cookie-setting-row{grid-template-columns:1fr}.cookie-modal-actions{align-items:flex-start;flex-direction:column}
 .cookie-preferences-button{right:8px;bottom:8px}
}
/* v3.8 matchmaking + bonusfelter */
.matchmaking-wait,.queue-home-status{max-width:900px;margin:14px 0;padding:16px 18px;border:1px solid #9fc2c7;border-radius:12px;background:#eef7f8}.matchmaking-wait{display:flex;align-items:center;gap:16px}.matchmaking-wait h2{margin:0 0 5px}.matchmaking-wait p{margin:4px 0}.matchmaking-wait form{margin-left:auto;flex:0 0 auto}.matchmaking-spinner{width:34px;height:34px;border:4px solid #c9dcdf;border-top-color:#245b62;border-radius:50%;animation:mmspin .9s linear infinite;flex:0 0 auto}@keyframes mmspin{to{transform:rotate(360deg)}}
.board .bonus-db{background:#cfe8ff!important}.board .bonus-tb{background:#91c9ff!important}.board .bonus-do{background:#ffd6dc!important}.board .bonus-to{background:#ff9ead!important}.board .bonus-gold{background:#f4d35e!important;color:#4a3900!important;font-weight:900!important;box-shadow:inset 0 0 0 2px #c79b00}
@media(max-width:700px){.matchmaking-wait{display:block}.matchmaking-spinner{margin-bottom:8px}.matchmaking-wait form{margin-top:12px}}

/* v3.9: privat favoritgenvej direkte fra spil og Mine spil */
.game-favorite-form{flex:0 0 auto;margin:0;padding:0}
.favorite-star{border:1px solid #c6cfcb;background:#fff;color:#8a9690;border-radius:8px;width:34px;height:34px;display:inline-grid;place-items:center;font-size:23px;line-height:1;cursor:pointer;padding:0}
.favorite-star:hover{transform:scale(1.05)}
.favorite-star.active{color:#b17a00;background:#fff8d8;border-color:#e0bd56}
.inline-favorite-form{display:inline;margin:0 0 0 5px;vertical-align:middle}
.inline-favorite-form .favorite-star{width:27px;height:27px;font-size:19px;border-radius:7px}
.opponent-name-line{display:inline-flex!important;align-items:center;justify-content:center;gap:4px}
@media(max-width:700px){
 .game-favorite-form{align-self:center}
}

/* v3.10 kontosletning */
.danger-zone{margin-top:32px;border:1px solid #d9aaa3}
.danger-zone h2{color:#8c3328}
.delete-account-form{max-width:520px}
.btn.danger{background:#9b3b30;border-color:#9b3b30;color:#fff}
.btn.danger:hover{filter:brightness(.92)}

/* v3.11 chat, moderation og favorit-layout */
.favorite-actions{display:flex;align-items:center;gap:10px;justify-content:flex-end;flex-wrap:wrap}.favorite-actions .inline-form{margin:0}.social-row{align-items:center}
.game-chat-link{display:flex;justify-content:flex-end;margin:0 0 10px}
.chat-page{max-width:760px}.chat-thread{display:flex;flex-direction:column;gap:10px;margin:15px 0}.chat-message{max-width:82%;padding:10px 13px;border-radius:12px;background:#eef2f2}.chat-message.mine{align-self:flex-end;background:#e5f1ed}.chat-message time{font-size:11px;color:#687;float:right;margin-left:10px}.chat-message p{margin:5px 0 0}.chat-compose{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end}.report-chat{margin-top:22px}.evidence-chat{max-height:440px;overflow:auto;border:1px solid #ccd5d5;padding:12px;background:#fafcfc}.admin-warning{border:2px solid #d59a35;background:#fff7df;border-radius:12px;padding:14px;margin-bottom:16px}.admin-case-actions{display:grid;grid-template-columns:2fr 1fr;gap:12px;align-items:end}
@media(max-width:650px){.chat-compose,.admin-case-actions{grid-template-columns:1fr}.chat-message{max-width:94%}.social-row{align-items:flex-start}.favorite-actions{justify-content:flex-start}}

/* v3.12 inaktive brugere */
.table-wrap{overflow-x:auto}.table-wrap table{width:100%;border-collapse:collapse}.table-wrap th,.table-wrap td{padding:10px 12px;border-bottom:1px solid #d9e0de;text-align:left;white-space:nowrap}.profile-member-since{color:#66736e;margin-top:-8px}

/* v3.13: samme chatknap får tydeligt udtryk ved ulæste beskeder */
.chat-button{display:inline-flex!important;align-items:center;gap:6px;position:relative}
.chat-button.has-unread{
  font-weight:800;
  border-width:2px;
  box-shadow:0 0 0 3px rgba(38,101,109,.10);
}
.chat-unread-text{font-weight:800}
.chat-unread-badge{
  min-width:23px;height:23px;padding:0 6px;border-radius:999px;
  display:inline-grid;place-items:center;
  background:#245b62;color:#fff;font-size:12px;font-weight:800;
}

/* v3.14: tydelig ulæst-chat badge */
.chat-unread-text{display:none!important}
.chat-unread-badge{
  box-sizing:border-box;
  min-width:24px!important;
  width:auto;
  height:24px!important;
  padding:0 6px!important;
  border:2px solid #c62828!important;
  border-radius:999px!important;
  background:#c62828!important;
  color:#fff!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  font-size:12px!important;
  font-weight:800!important;
  line-height:1!important;
}

/* v3.15 matchmaking feedback + favoritter ved invitationsfelt */
.matching-overlay{display:none;position:fixed;inset:0;z-index:9998;background:rgba(20,31,30,.34);align-items:center;justify-content:center;padding:20px}
.matching-overlay.visible{display:flex}
.matching-overlay-card{width:min(420px,92vw);background:#fff;border-radius:16px;padding:25px;text-align:center;box-shadow:0 18px 55px rgba(0,0,0,.22)}
.matching-overlay-card .matchmaking-spinner{margin:0 auto 14px}
.invite-user-form{align-items:center;flex-wrap:wrap}
.favorites-picker{margin-top:10px;border:1px solid #d6dfdc;border-radius:10px;padding:10px;background:#f9fbfa}
.favorite-pick-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid #e5ebe9}
.favorite-pick-row:last-child{border-bottom:0}
.favorite-name-pick{border:0;background:transparent;text-align:left;font:inherit;font-weight:700;cursor:pointer;padding:7px;border-radius:7px}
.favorite-name-pick:hover{background:#edf4f1}
.btn.small{padding:7px 10px;font-size:13px}
@media(max-width:600px){.invite-user-form{display:grid!important;grid-template-columns:1fr auto}.invite-user-form input{grid-column:1/-1}.favorites-picker{width:100%}}

/* v3.16: ulæst chat-badge oven på modstanderens profilbillede på Mine spil */
.game-avatar-wrap{
  position:relative;
  display:inline-block;
  width:58px;
  height:58px;
  flex:0 0 58px;
}
.game-avatar-wrap .game-opponent-avatar{
  width:58px!important;
  height:58px!important;
  display:block;
}
.game-chat-badge{
  position:absolute;
  top:-7px;
  right:-7px;
  z-index:2;
  min-width:24px;
  height:24px;
  padding:0 6px;
  box-sizing:border-box;
  border-radius:999px;
  border:2px solid #c62828;
  background:#c62828;
  color:#fff;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:12px;
  font-weight:800;
  line-height:1;
  box-shadow:0 1px 4px rgba(0,0,0,.18);
}
@media(max-width:700px){
  .game-avatar-wrap{width:46px;height:46px;flex-basis:46px}
  .game-avatar-wrap .game-opponent-avatar{width:46px!important;height:46px!important}
  .game-chat-badge{top:-6px;right:-6px;min-width:22px;height:22px;font-size:11px}
}

/* v3.17: private kladder, live-spil og opgiv */
.draft-note{margin:10px 0;padding:10px 12px;background:#eef6f3;border-left:4px solid #4b7d72;border-radius:7px;font-size:13px}
.resign-form{margin-top:12px;display:flex;justify-content:flex-end}

/* v3.18 administrator-overblik */
.admin-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:14px;margin:18px 0}
.admin-stat-card{background:#fff;border:1px solid #d9e2df;border-radius:14px;padding:20px;text-align:center;box-shadow:0 3px 12px rgba(0,0,0,.05)}
.admin-stat-card strong{display:block;font-size:34px;line-height:1.1;margin-bottom:7px}
.admin-stat-card span{font-weight:700}
@media(max-width:800px){.admin-stat-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:480px){.admin-stat-grid{grid-template-columns:1fr}}

/* v3.20: matchmaking fortsætter fra Mine spil */
.queue-home-status{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.queue-home-status form{margin:0}
@media(max-width:600px){.queue-home-status{align-items:flex-start;flex-direction:column}}

/* v3.22: omformning af ord */
.cell.pending-removal{position:relative;opacity:.58}
.cell.pending-removal::after{content:"×";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:900;color:#8d1c1c;background:rgba(255,255,255,.32)}

/* v3.23: Foreslå ord */
.suggest-form{margin:0}
.suggest-offer{margin:14px 0;padding:16px 18px;border:1px solid #cbdad5;border-radius:12px;background:#f4faf8}
.suggest-offer p{margin:8px 0 12px}
.suggest-offer form{display:flex;gap:9px;align-items:center;flex-wrap:wrap}

/* v3.25 admin-mail */
.mail-test-box{margin-top:14px;padding-top:12px;border-top:1px solid #d9e2df}

/* v3.27: tydelig sidenavigation i ordbogen */
.dictionary-pagination{display:flex!important;flex-wrap:wrap;justify-content:flex-start;gap:8px;margin:12px 0 18px}
.dictionary-pagination .page-link{display:inline-flex;min-width:38px;height:38px;padding:0 11px;align-items:center;justify-content:center;border:1px solid #9fb6ae;border-radius:8px;text-decoration:none;font-weight:700;background:#fff}
.dictionary-pagination .current{background:#dfeae6;border-color:#6e9588}

/* v3.28: præsentationsforside */
.landing-main{max-width:1180px;margin:0 auto;padding:28px 22px 56px}
.landing-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.9fr);gap:52px;align-items:center;padding:48px 0 64px}
.landing-hero h1{font-size:clamp(44px,7vw,78px);line-height:.98;margin:8px 0 20px;letter-spacing:-2px}
.landing-hero .lead{font-size:20px;line-height:1.55;max-width:650px}
.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:12px;font-weight:800;opacity:.7}
.hero-small{font-size:13px;opacity:.68;margin-top:17px}
.lexundo-preview{border:1px solid #bdcec8;border-radius:20px;padding:17px;background:#f6faf8;box-shadow:0 22px 55px rgba(30,55,47,.12);transform:rotate(1deg)}
.preview-top,.preview-score{display:flex;justify-content:space-between;gap:12px;margin-bottom:10px;font-size:13px}.preview-top{font-weight:800}.preview-score{opacity:.8}
.mini-board{display:grid;grid-template-columns:repeat(11,1fr);aspect-ratio:1;border:1px solid #aebdb8;background:#dce8e4}
.mini-board span{display:flex;align-items:center;justify-content:center;border:1px solid rgba(80,105,96,.18);font-weight:900;font-size:clamp(10px,1.4vw,19px)}
.mini-board .has-letter{background:#fff7d7;box-shadow:inset 0 0 0 1px #c7ad64}
.preview-rack{display:flex;justify-content:center;gap:6px;margin-top:13px;flex-wrap:wrap}.preview-rack b{display:flex;width:32px;height:32px;align-items:center;justify-content:center;border-radius:5px;background:#fff3c5;border:1px solid #cdb873}
.landing-intro{text-align:center;max-width:760px;margin:20px auto 30px}.landing-intro h2{font-size:34px;margin:7px 0 12px}
.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:30px 0 70px}.feature-grid article{padding:25px;border:1px solid #d3dfdb;border-radius:16px;background:#fff}.feature-grid h2{margin:16px 0 8px}.feature-example{font-size:21px;font-weight:900;letter-spacing:.04em}.feature-example span{opacity:.45;margin:0 5px}
.showcase{display:grid;grid-template-columns:1fr 1fr;gap:46px;align-items:center;padding:48px;border-radius:22px;background:#eef5f2;margin-bottom:65px}.showcase h2{font-size:34px;margin:7px 0 12px}.text-link{font-weight:800}.showcase-cards{display:grid;gap:10px}.showcase-cards span{display:flex;flex-direction:column;padding:17px 19px;background:#fff;border-radius:12px;border:1px solid #d3dfdb}.showcase-cards small{margin-top:4px;opacity:.7}
.landing-cta{text-align:center;padding:45px 20px;border-top:1px solid #d7e0dd}.landing-cta h2{font-size:34px;margin:0 0 8px}.landing-cta .btn{margin-top:12px}
@media(max-width:800px){.landing-main{padding:18px 15px 42px}.landing-hero{grid-template-columns:1fr;gap:30px;padding:28px 0 45px}.lexundo-preview{max-width:520px;margin:auto;transform:none}.feature-grid{grid-template-columns:1fr;margin-bottom:45px}.showcase{grid-template-columns:1fr;padding:28px 20px;gap:25px}.landing-hero h1{letter-spacing:-1px}}

/* v3.34: bonusfelter i forsides brætpræsentation */
.mini-board span[class*="bonus-"]{font-size:clamp(7px,.85vw,11px);font-weight:900}
.mini-board .bonus-dl{background:#d7eef7}
.mini-board .bonus-tl{background:#9fd2e5}
.mini-board .bonus-dw{background:#f3d7d1}
.mini-board .bonus-tw{background:#e8afa4}
.mini-board .bonus-gold{background:#e6c35a}
.mini-board .has-letter{font-size:clamp(10px,1.4vw,19px)}
.suggest-form.is-searching button{cursor:wait;opacity:.8}

/* v3.35 replay og nye spillerfunktioner */
.game-extra-actions{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.replay-board{display:grid;grid-template-columns:repeat(15,minmax(18px,38px));width:min(100%,570px);aspect-ratio:1;margin:20px auto;background:#dce8e4;border:1px solid #9baca6}
.replay-board span{display:flex;align-items:center;justify-content:center;border:1px solid rgba(80,105,96,.2);font-weight:900}
.replay-board .has-letter{background:#fff3c5}
.replay-nav,.replay-info{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;margin:15px 0}.replay-info{flex-direction:column;gap:4px}
@media(max-width:650px){.replay-board{grid-template-columns:repeat(15,1fr)}.replay-board span{font-size:11px}}

/* v3.36: replay-tidslinje */
.replay-jump{display:flex;align-items:center;gap:7px;margin:0}
.replay-jump span{font-size:13px;font-weight:700}
.replay-jump select{max-width:320px;min-width:180px;padding:9px 11px;border:1px solid #aabbb5;border-radius:8px;background:#fff}
.replay-nav button:disabled{opacity:.4;cursor:not-allowed}
@media(max-width:720px){
  .replay-nav{gap:9px}
  .replay-jump{width:100%;justify-content:center;order:-1}
  .replay-jump select{max-width:75vw}
}

/* v3.37: replay-navigation er server-side og altid synlig */
.replay-nav{display:flex!important;visibility:visible!important;align-items:center;justify-content:center;gap:9px;flex-wrap:wrap;margin:16px 0}
.replay-nav .btn{display:inline-flex!important;visibility:visible!important;align-items:center;justify-content:center}
.replay-nav .btn.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}
.replay-nav-top{padding:12px;background:#eef5f2;border-radius:12px}
.replay-nav-bottom{padding-top:6px}
.replay-counter{min-width:92px;text-align:center}
.replay-jump{margin:0}
.replay-jump label{display:flex;align-items:center;gap:7px;margin:0}
.replay-jump select{display:block;min-width:220px;max-width:370px;padding:10px;border:1px solid #aabbb5;border-radius:8px;background:#fff}
@media(max-width:720px){
 .replay-nav-top{flex-direction:column}
 .replay-nav-top .btn,.replay-nav-bottom .btn{width:100%;box-sizing:border-box}
 .replay-jump,.replay-jump label,.replay-jump select{width:100%;max-width:100%}
 .replay-nav-bottom{display:grid!important;grid-template-columns:1fr 1fr}
 .replay-nav-bottom strong{grid-column:1/-1;grid-row:1;text-align:center}
}


/* v3.39: mobil/touch placering af bogstaver */
.tile{touch-action:none;-webkit-user-select:none;user-select:none}
.touch-drag-ghost{
  position:fixed!important;
  z-index:99999!important;
  pointer-events:none!important;
  transform:translate(-50%,-65%);
  width:46px!important;
  height:52px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  opacity:.9;
  box-shadow:0 8px 22px rgba(0,0,0,.28);
}
.board .cell.touch-drop-target{
  outline:3px solid #245b62!important;
  outline-offset:-3px;
  background:#dceff0!important;
}
#rack.touch-drop-target{
  outline:3px solid #245b62;
  outline-offset:3px;
  border-radius:8px;
}
.mobile-place-hint{display:none}
@media(max-width:700px),(pointer:coarse){
  .mobile-place-hint{
    display:block!important;
    margin:7px 0 10px;
    padding:8px 10px;
    background:#eaf2f0;
    border-radius:8px;
    font-size:13px;
  }
}


/* v3.40: mere kompakt mobil-UI. Brættets størrelse ændres ikke. */
.chat-button-icon{display:none}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

@media(max-width:700px){
  /* Tekst og luft omkring spillet gøres mindre - board/cell-regler røres ikke. */
  main{padding-left:8px;padding-right:8px}
  main h1{font-size:1.45rem;line-height:1.15;margin-top:10px;margin-bottom:10px}
  main h2{font-size:1.15rem;line-height:1.2}
  .hint,.mobile-place-hint{font-size:.78rem;line-height:1.3}
  .game-head{gap:8px}
  .score-player span,.opponent-name-line{font-size:.82rem}
  .score-player strong{font-size:1.35rem}
  .score-separator{font-size:1rem}
  .game-status,.turn-status,.tiles-left{font-size:.8rem}
  .bottom-actions{gap:6px}
  .bottom-actions .btn{font-size:.82rem;padding:8px 10px}

  /* Chat bliver en kompakt taleboble-knap på mobil. */
  .game-chat-link{margin:5px 0 8px}
  .chat-button{
    position:relative;
    width:42px!important;
    min-width:42px!important;
    height:42px!important;
    padding:0!important;
    border-radius:50%!important;
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    font-size:1.25rem!important;
    line-height:1!important;
  }
  .chat-button-text{display:none!important}
  .chat-button-icon{display:inline!important}
  .chat-button .chat-unread-badge{
    position:absolute!important;
    top:-5px!important;
    right:-5px!important;
    min-width:18px!important;
    height:18px!important;
    padding:0 4px!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    font-size:.68rem!important;
    line-height:1!important;
    border-radius:999px!important;
  }
}


/* v3.41: mobil spilbjælke og kompakt scoreområde. Board/cell-størrelser ændres ikke. */
.mobile-action-label,.mobile-more-button,.mobile-more-menu{display:none}

@media(max-width:700px){
  header{padding-top:5px!important;padding-bottom:5px!important}
  header .brand small{display:none}
  header nav{font-size:.72rem;gap:5px}
  header nav a{padding:4px 5px}

  .game-head{margin:3px 0 5px!important}
  .score-area{
    position:relative;
    padding:5px 46px 5px 7px!important;
    min-height:38px;
  }
  .scoreboard{gap:5px!important}
  .score-player{gap:3px!important}
  .score-player span,.opponent-name-line{font-size:.72rem!important;line-height:1.05}
  .score-player strong{font-size:1.08rem!important;line-height:1}
  .score-separator{font-size:.85rem!important}
  .tiles-left{font-size:.68rem!important;margin-top:2px!important}

  .score-chat-button{
    position:absolute!important;
    right:5px!important;
    top:50%!important;
    transform:translateY(-50%)!important;
    width:34px!important;
    min-width:34px!important;
    height:34px!important;
    padding:0!important;
    border-radius:50%!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    font-size:1.05rem!important;
  }
  .score-chat-button .chat-button-text{display:none!important}
  .score-chat-button .chat-button-icon{display:inline!important}

  .mobile-place-hint{display:none!important}
  .desktop-action-label{display:none!important}
  .mobile-action-label{display:inline!important}

  .bottom-actions{
    position:sticky;
    bottom:0;
    z-index:100;
    display:grid!important;
    grid-template-columns:repeat(4,1fr);
    gap:5px!important;
    padding:6px 5px!important;
    margin:5px -3px 0!important;
    background:rgba(255,255,255,.96);
    box-shadow:0 -3px 12px rgba(0,0,0,.10);
    backdrop-filter:blur(4px);
  }
  .bottom-actions > .mobile-primary-action,
  .bottom-actions > form:not(.mobile-overflow-item){
    display:block!important;
    width:100%!important;
    margin:0!important;
  }
  .bottom-actions > form:not(.mobile-overflow-item) .btn{
    width:100%!important;
    height:38px!important;
    padding:6px 4px!important;
    font-size:.78rem!important;
  }
  .bottom-actions > .mobile-primary-action{
    height:38px!important;
    padding:6px 4px!important;
    font-size:.78rem!important;
  }
  .mobile-more-button{
    display:block!important;
    height:38px!important;
    min-width:0!important;
    padding:0!important;
    font-size:1.35rem!important;
    line-height:1!important;
  }

  .mobile-more-menu{
    position:fixed;
    right:8px;
    bottom:54px;
    z-index:150;
    width:min(260px,calc(100vw - 16px));
    padding:8px;
    background:#fff;
    border:1px solid #ccd5d6;
    border-radius:10px;
    box-shadow:0 8px 28px rgba(0,0,0,.22);
  }
  .mobile-more-menu:not([hidden]){display:flex!important;flex-direction:column;gap:6px}
  .mobile-more-menu .mobile-overflow-item{display:block!important;width:100%!important;margin:0!important}
  .mobile-more-menu .btn{display:block!important;width:100%!important;box-sizing:border-box;text-align:center;font-size:.8rem!important;padding:8px!important}
  .mobile-more-menu form .btn{width:100%!important}
  .mobile-more-menu .game-extra-actions{padding:0!important}
  .mobile-more-menu .game-extra-actions .btn{margin:0!important}

  /* Cookie-indstillinger er fortsat tilgængelige på øvrige sider, men fylder ikke i selve mobilspillet. */
  body:has(#board) .cookie-settings-link,
  body:has(#board) .cookie-preferences-link,
  body:has(#board) .cookie-settings-button{display:none!important}
}

/* v3.42: ekstra sikkerhed mod flydende cookie-kontrol på spilsiden. */
@media(max-width:700px){
  .cookie-settings,.cookie-settings-button,.cookie-settings-link,
  .cookie-preferences,.cookie-preferences-link,[data-cookie-settings]{
    display:none!important;
  }
}


/* v3.43: fokuseret mobilspil - navigation og faner fjernes fra selve spilvisningen. */
.mobile-only-menu-link{display:none!important}

@media(max-width:700px){
  /* Topnavigationen hører til oversigten, ikke det aktive spil. */
  body > header nav{display:none!important}
  body > header{
    min-height:0!important;
    padding:3px 8px!important;
    margin:0!important;
  }
  body > header .brand{margin:0!important;line-height:1!important}
  body > header .brand b{font-size:.92rem!important}

  /* Bræt/Turstatistik-fanerne tager ikke plads på mobil. */
  .desktop-game-tabs{display:none!important}

  /* Turstatistik og tilbage til oversigten ligger under ⋮. */
  .mobile-more-menu .mobile-game-menu-links{
    display:flex!important;
    flex-direction:column;
    gap:6px;
    width:100%!important;
  }
  .mobile-more-menu .mobile-only-menu-link{
    display:block!important;
    width:100%!important;
    box-sizing:border-box;
  }

  /* Lidt mindre luft mellem score og bræt. */
  .game-head{margin-bottom:2px!important}
  #boardView{margin-top:0!important}
  .play-stack{margin-top:0!important}
}


/* v3.44: Computerens faktiske bogstaver vises aldrig for spilleren. */
.computer-rack-status .hidden-tiles{display:none!important}
.computer-rack-status{font-size:.8rem;opacity:.78}
.computer-thinking small{display:block;margin-top:5px;font-size:.72rem}


/* v3.45: allerede placerede kladdebogstaver kan flyttes tydeligt med finger. */
.pending-tile{
  touch-action:none!important;
  -webkit-user-select:none!important;
  user-select:none!important;
  cursor:grab;
}
.pending-tile-selected{
  outline:3px solid #245b62!important;
  outline-offset:-3px;
  box-shadow:inset 0 0 0 2px #fff;
}

/* v3.45: mere kompakt "Mine spil" på mobil - flere kampe synlige ad gangen. */
@media(max-width:700px){
  .game-group{margin-top:14px!important}
  .game-group h2{
    font-size:1rem!important;
    margin:7px 0!important;
    line-height:1.1!important;
  }
  .group-count{
    min-width:20px!important;
    height:20px!important;
    padding:0 5px!important;
    font-size:.7rem!important;
  }
  .game-list{gap:5px!important}
  .rich-game-row{
    padding:0!important;
    min-height:0!important;
  }
  .game-row-link{
    padding:7px 8px!important;
    gap:8px!important;
    min-height:0!important;
  }
  .game-opponent-avatar{
    width:34px!important;
    height:34px!important;
  }
  .game-card-main strong{font-size:.84rem!important;line-height:1.05!important}
  .game-card-main small{
    font-size:.66rem!important;
    line-height:1.12!important;
    margin-top:1px!important;
  }
  .game-score strong{font-size:.92rem!important}
  .favorite-star{font-size:1rem!important}
  .mini-btn{font-size:.64rem!important;padding:5px 7px!important}
  main > h1{font-size:1.25rem!important;margin:8px 0!important}
  .dashboard-actions{margin-bottom:12px!important}
  .dashboard-actions .btn{padding:8px 12px!important;font-size:.78rem!important}
}


/* v3.46: spilfladen skal være et bræt, ikke en statusside. */
@media(max-width:700px){
  /* Sekundære handlinger må aldrig ligge synligt over brættet mens JS flytter dem. */
  #boardView > .mobile-overflow-item,
  .play-controls > .mobile-overflow-item,
  .play-stack > .mobile-overflow-item{display:none!important}
  #mobileMoreMenu .mobile-overflow-item{display:block!important}

  .computer-thinking{padding:5px 8px!important;margin:3px 0!important;min-height:0!important}
  .computer-thinking-icon{font-size:1rem!important}
  .computer-thinking span{font-size:.72rem!important}
}

/* Et bogstav dækker bonusfeltets farve helt - både kladde og godkendt. */
.board .cell.played-tile,
.board .cell.pending-tile,
.board .cell.starter-tile{
  background:#f3e6c7!important;
  color:#182022!important;
  background-image:none!important;
}


/* v3.47: chat er kompakt og sidder i højre side af scoreområdet på ALLE skærme. */
.score-area{position:relative;padding-right:52px!important}
.score-chat-button{
  position:absolute!important;
  right:7px!important;
  top:50%!important;
  transform:translateY(-50%)!important;
  width:38px!important;
  min-width:38px!important;
  height:38px!important;
  padding:0!important;
  border-radius:50%!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  line-height:1!important;
}
.score-chat-button .chat-button-text{display:none!important}
.score-chat-button .chat-button-icon{
  display:inline!important;
  font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",sans-serif!important;
  font-size:20px!important;
  line-height:1!important;
}

/* Desktop og mobil bruger samme navn på handlingen. */
.desktop-action-label,.mobile-action-label{display:none!important}

/* Resultatsiden: revancheinvitationen ligger tydeligt OVEN OVER resultatboksen. */
.rematch-invite-live{
  margin:10px 0;
  padding:15px;
  border:2px solid #245b62;
  border-radius:12px;
  background:#eef8f5;
  box-shadow:0 4px 16px rgba(0,0,0,.08);
}
.rematch-invite-live > strong{display:block;font-size:1.08rem;margin-bottom:10px}
.rematch-invite-actions{display:flex;gap:8px;flex-wrap:wrap}
.rematch-invite-actions form{margin:0}
.rematch-sent-note,.draft-adjusted{font-size:.78rem;margin:6px 0;color:#556}

/* Desktop: hovedhandlingerne bliver sticky nederst, så der ikke skal scrolles frem/tilbage. */
@media(min-width:701px){
  .bottom-actions{
    position:sticky;
    bottom:8px;
    z-index:90;
    background:rgba(255,255,255,.96);
    border:1px solid #d6dfdc;
    border-radius:10px;
    padding:7px!important;
    box-shadow:0 5px 18px rgba(0,0,0,.10);
  }
}

/* Mobil: lidt tydeligere vej tilbage til spiloversigten i ⋮ menuen. */
@media(max-width:700px){
  .mobile-more-menu a[href="home.php"]{
    font-weight:800!important;
    border-width:2px!important;
  }
}


/* v3.48: samme chat-taleboble på desktop og mobil. Ingen synlig "Chat"-tekst. */
.score-area{
  position:relative!important;
  padding-right:50px!important;
}
.score-chat-button{
  position:absolute!important;
  right:6px!important;
  top:50%!important;
  transform:translateY(-50%)!important;
  width:38px!important;
  min-width:38px!important;
  max-width:38px!important;
  height:38px!important;
  min-height:38px!important;
  padding:0!important;
  margin:0!important;
  border-radius:50%!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:visible!important;
}
.score-chat-button .chat-bubble-symbol{
  display:block!important;
  font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",sans-serif!important;
  font-size:20px!important;
  line-height:1!important;
  width:auto!important;
  height:auto!important;
}
.score-chat-button .chat-unread-badge{
  position:absolute!important;
  right:-5px!important;
  top:-5px!important;
}

/* Byt er visuelt tydeligt utilgængelig, når et brættræk allerede er påbegyndt. */
#exchangeButton:disabled{
  opacity:.42!important;
  cursor:not-allowed!important;
}


/* v3.49: på desktop ligger chatboblen lige ved siden af selve pointtavlen. */
@media(min-width:701px){
  .game-head{
    display:flex!important;
    justify-content:center!important;
  }
  .score-area{
    position:relative!important;
    width:max-content!important;
    max-width:calc(100% - 60px)!important;
    padding-right:0!important;
  }
  .score-chat-button{
    right:-50px!important;
    top:50%!important;
  }
}


/* v3.50: pæn handlingsmenu ved et optaget felt - ingen teknisk 1/2/3 prompt. */
.occupied-action-menu{
  position:fixed;
  z-index:10050;
  min-width:310px;
  max-width:calc(100vw - 24px);
  padding:10px;
  background:#fff;
  border:1px solid #cbd8d5;
  border-radius:12px;
  box-shadow:0 10px 30px rgba(0,0,0,.20);
}
.occupied-action-title{
  font-size:.82rem;
  font-weight:700;
  margin:0 0 8px;
}
.occupied-action-buttons{
  display:flex;
  align-items:center;
  gap:6px;
  flex-wrap:wrap;
}
.occupied-action-buttons button,
.occupied-direction button{
  border:1px solid #9fb5b1;
  background:#f6faf9;
  border-radius:8px;
  padding:8px 10px;
  font:inherit;
  cursor:pointer;
}
.occupied-action-buttons button:hover,
.occupied-direction button.active{
  background:#e3f0ed;
}
.occupied-action-close{
  margin-left:auto;
  width:34px;
  height:34px;
  padding:0!important;
  font-size:20px!important;
}
.occupied-direction{
  display:flex;
  gap:6px;
  margin-top:8px;
  padding-top:8px;
  border-top:1px solid #e2e8e6;
}
.occupied-action-menu.mobile{
  left:10px!important;
  right:10px!important;
  bottom:72px!important;
  top:auto!important;
  min-width:0;
  width:auto;
}
@media(max-width:700px){
  .occupied-action-buttons{
    display:grid;
    grid-template-columns:1fr 1fr;
  }
  .occupied-action-close{margin-left:0}
}


/* v3.57: Forsiden viser både almindelig og Lexundo-specifik ordudvidelse. */
.feature-example-secondary{
  margin-top:7px;
  font-size:.92em;
}
.insert-highlight{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:1.25em;
  padding:0 .12em;
  margin:0 .04em;
  border:2px solid #e79524;
  border-radius:5px;
  background:#fff3d8;
}


/* ============================================================
   v3.58 DESKTOP SPILLELAYOUT
   Bræt og holder skal være synlige samtidig uden lodret scrolling.
   ============================================================ */
.desktop-game-more{display:none}

@media(min-width:901px){
  #boardView{
    width:100%;
  }

  #boardView .play-stack{
    display:grid!important;
    grid-template-columns:max-content 250px;
    justify-content:center;
    align-items:start;
    gap:18px!important;
    width:100%;
    max-width:900px;
    margin:0 auto;
  }

  #boardView .board-wrap{
    width:max-content!important;
    overflow:visible!important;
    justify-content:flex-start!important;
  }

  #boardView .play-controls{
    width:250px!important;
    position:sticky;
    top:90px;
    align-self:start;
    box-sizing:border-box;
    padding:12px!important;
    border:1px solid #d8e1df;
    border-radius:12px;
    background:#fff;
    box-shadow:0 3px 14px rgba(0,0,0,.07);
  }

  /* Holderen bliver 2 x 4 på desktop. */
  #boardView .play-controls .rack{
    display:grid!important;
    grid-template-columns:repeat(4,46px);
    justify-content:center!important;
    gap:8px!important;
    margin:0 0 14px!important;
    padding:0!important;
  }

  #boardView .play-controls .tile{
    width:46px!important;
    min-width:46px!important;
    height:52px!important;
  }

  #boardView .bottom-actions{
    position:static!important;
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
    margin:0!important;
    padding:0!important;
    background:transparent!important;
    box-shadow:none!important;
  }

  #boardView .bottom-actions > *,
  #boardView .bottom-actions form{
    min-width:0!important;
    margin:0!important;
  }

  #boardView .bottom-actions .btn{
    width:100%!important;
    height:42px!important;
    padding:7px 6px!important;
    margin:0!important;
    font-size:.82rem!important;
  }

  /* På desktop er ⋮ den eneste permanente adgang til sjældne funktioner. */
  #boardView .game-extra-actions,
  #boardView > .resign-form,
  #boardView .play-stack > .resign-form{
    display:none!important;
  }

  .desktop-game-more{
    display:block!important;
    position:relative;
    margin-top:10px;
  }

  .desktop-game-more summary{
    list-style:none;
    cursor:pointer;
    border:1px solid #245b62;
    border-radius:8px;
    text-align:center;
    padding:8px;
    font-weight:800;
    color:#245b62;
    user-select:none;
  }
  .desktop-game-more summary::-webkit-details-marker{display:none}

  .desktop-game-more-menu{
    display:grid;
    gap:7px;
    margin-top:7px;
    padding-top:7px;
    border-top:1px solid #e1e7e5;
  }

  .desktop-game-more-menu form{margin:0}
  .desktop-game-more-menu .btn{width:100%!important;margin:0!important}

  .mobile-place-hint{display:none!important}
}

/* Mellemstore skærme beholder den hidtidige lodrette løsning.
   Mobilreglerne under 700px er uændrede. */

/* v3.59: Spil/Pas er den primære handling og fylder hele sidepanelets bredde. */
@media(min-width:901px){
  #boardView .bottom-actions #submitMove{grid-column:1 / -1!important}
}

/* v3.61: Det er formen - ikke kun knappen - der er grid-elementet. */
@media(min-width:901px){
  #boardView .bottom-actions #playForm{grid-column:1 / -1!important;width:100%!important}
  #boardView .bottom-actions #playForm #submitMove{width:100%!important}
}

.rematch-sent-status{display:flex;flex-direction:column;gap:3px;align-items:center;margin-top:12px}
.rematch-sent-status strong{color:#245b62}
.rematch-sent-status span{font-size:.9rem;color:#536064}

.game-invite-overlay{
  position:fixed;z-index:1200;left:50%;top:18px;transform:translateX(-50%);
  width:min(520px,calc(100vw - 24px));display:grid;gap:8px;
}
.game-invite-card{
  background:#fff7d8;border:2px solid #e0a12c;border-radius:14px;
  box-shadow:0 8px 28px rgba(0,0,0,.22);padding:14px 16px;text-align:center;
}
.game-invite-card>span{display:block;margin:5px 0 10px;color:#536064;font-size:.9rem}
.game-invite-card .rematch-invite-actions{display:flex;justify-content:center;gap:8px}

/* v3.69: tydelig arbejdsstatus for Foreslå ord */
.suggest-link.is-loading{pointer-events:none;opacity:.78;display:inline-flex;align-items:center;justify-content:center;gap:8px}
.suggest-spinner{width:15px;height:15px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;display:inline-block;animation:lexundo-spin .7s linear infinite}
@keyframes lexundo-spin{to{transform:rotate(360deg)}}


/* v3.70: Hovedmenu på Mine spil. Desktop viser almindelig navigation,
   mobil viser en kompakt ☰-menu. */
.home-menu-button{display:none}
@media(max-width:700px){
  .home-header{position:relative;display:flex;align-items:center;justify-content:space-between}
  .home-menu-button{
    display:flex!important;align-items:center;justify-content:center;
    width:38px;height:38px;padding:0;border:1px solid rgba(255,255,255,.45);
    border-radius:9px;background:transparent;color:inherit;font-size:1.35rem;cursor:pointer;
  }
  .home-main-nav{
    display:none!important;position:absolute;right:8px;top:calc(100% + 4px);z-index:800;
    width:min(270px,calc(100vw - 16px));padding:8px;background:#fff;color:#203334;
    border:1px solid #ccd8d6;border-radius:11px;box-shadow:0 8px 28px rgba(0,0,0,.22);
  }
  .home-main-nav.open{display:flex!important;flex-direction:column;gap:3px}
  .home-main-nav a{display:block!important;width:100%;box-sizing:border-box;padding:9px 10px!important;color:#203334!important;border-radius:7px}
  .home-main-nav a:hover{background:#edf4f2}
}


/* v3.76: Bogstaver indsat af Foreslå ord skal være umiskendelige som kladde. */
.cell.suggested-tile,
.cell.pending-tile.suggested-tile,
.cell.latest-move-tile.suggested-tile{
  background:#c62828!important;
  color:#fff!important;
  border-color:#8e1c1c!important;
}
.cell.suggested-tile .tile-letter,
.cell.suggested-tile .tile-value{
  color:#fff!important;
}


/* v3.82: Ordforslag i kladden er altid rødt/hvidt.
   Denne regel ligger sidst i CSS og vinder over seneste-træk/valgt-felt. */
.board .cell.pending-tile.suggested-tile{
  background:#c62828!important;
  background-color:#c62828!important;
  color:#fff!important;
  border-color:#8e1c1c!important;
  box-shadow:inset 0 0 0 2px #8e1c1c!important;
}
.board .cell.pending-tile.suggested-tile .tile-letter,
.board .cell.pending-tile.suggested-tile .tile-value,
.board .cell.pending-tile.suggested-tile small{
  color:#fff!important;
}
