:root{color:#0f172a;background-color:#f1f5f9;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5}*,*:before,*:after{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%}body{background:var(--page-bg, #f1f5f9)}.app{max-width:1080px;margin:0 auto;padding:3rem 1.5rem 4rem;display:flex;flex-direction:column;gap:2rem}.app__header{display:flex;flex-direction:column;gap:1.5rem}.app__header h1{margin:0;font-size:clamp(1.5rem,2vw + 1rem,2.5rem);text-align:center}.app__controls{display:flex;flex-wrap:wrap;gap:1rem 2rem;align-items:flex-end;background:#fff;border-radius:16px;padding:1.5rem;box-shadow:0 15px 40px #0f172a14}.app__form{display:grid;gap:.5rem;min-width:220px}.app__form label,.app__side-controls label{font-weight:600;color:#1e293b}.app__form input,.app__side-controls input,.app__side-controls select{padding:.65rem .75rem;border-radius:10px;border:1px solid #cbd5e1;font-size:.95rem;transition:border .2s ease,box-shadow .2s ease}.app__form input:focus,.app__side-controls input:focus,.app__side-controls select:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1f}.app__form button{padding:.7rem 1.2rem;border-radius:10px;border:none;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;font-weight:600;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.app__form button:hover{transform:translateY(-1px);box-shadow:0 10px 25px #2563eb40}.app__side-controls{display:grid;gap:.75rem;grid-auto-flow:row;min-width:220px}.site-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;background:#0f172a;color:#fff;border-radius:18px;box-shadow:0 15px 45px #0f172a40}.site-header__brand{display:flex;align-items:center;gap:1rem}.site-header__home{color:inherit;text-decoration:none;font-weight:700;font-size:clamp(1.1rem,1.8vw,1.6rem)}.site-header__route{font-size:.85rem;color:#ffffffb3}.site-header__controls{display:flex;align-items:center;gap:.75rem}.site-header__controls label{font-weight:600}.site-header__controls select,.site-header__controls input{padding:.5rem .7rem;border-radius:8px;border:none;font-size:.9rem}.app__main{min-height:540px}.app__hint{text-align:center;color:#475569;font-size:1rem}.home{background:#fff;border-radius:18px;padding:2rem;box-shadow:0 12px 32px #0f172a14;display:flex;flex-direction:column;gap:1.5rem}.home__title{margin:0;font-size:clamp(1.8rem,2vw + 1.2rem,2.6rem);color:#0f172a}.home__subtitle{margin:0;color:#475569}.home__actions{display:flex;gap:1rem;flex-wrap:wrap}.home__actions button{padding:.75rem 1.25rem;border-radius:12px;border:none;background:#1d4ed8;color:#fff;font-weight:600;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.home__actions button:hover{transform:translateY(-1px);box-shadow:0 10px 24px #1d4ed840}.players{background:#fff;border-radius:18px;padding:2rem;box-shadow:0 12px 32px #0f172a14;display:flex;flex-direction:column;gap:1.5rem}.players__header{display:flex;justify-content:space-between;align-items:center;gap:1rem}.players__header h1{margin:0}.players__header p{margin:0;color:#475569}.players__header button,.players__status button,.players__grid button{border:none;background:#2563eb;color:#fff;border-radius:10px;padding:.6rem 1rem;cursor:pointer;font-weight:600}.players__message,.players__status,.players__empty{margin:0;color:#475569}.players__message--error,.players__status--error{color:#dc2626}.players__status--success{color:#16a34a}.players__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}.player-card{display:flex;align-items:center;gap:.75rem;padding:.85rem 1rem;background:#f8fafc;border-radius:14px;box-shadow:inset 0 0 0 1px #e2e8f0;cursor:pointer;transition:box-shadow .2s ease,transform .2s ease}.player-card:hover{box-shadow:0 8px 20px #0f172a1a;transform:translateY(-1px)}.player-card__avatar{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:#e2e8f0;font-size:1.5rem}.player-card__details{display:flex;flex-direction:column;gap:.15rem;flex:1}.player-card__name{font-weight:600;color:#0f172a}.player-card__username{font-size:.85rem;color:#475569}.player-card__actions{font-size:.85rem;color:#2563eb;font-weight:600}.player-form{display:grid;gap:1rem;background:#f8fafc;padding:1.5rem;border-radius:16px;box-shadow:inset 0 0 0 1px #e2e8f0}.player-form__field{display:grid;gap:.35rem}.player-form__field label{font-weight:600;color:#1e293b}.player-form__input-group{display:flex;align-items:center;border:1px solid #cbd5e1;border-radius:10px;overflow:hidden}.player-form__prefix{padding:.5rem .7rem;background:#e2e8f0;color:#1e293b;font-weight:600}.player-form input,.player-form select{border:1px solid #cbd5e1;border-radius:10px;padding:.6rem .75rem;font-size:.95rem}.player-form__input-group input{border:none;flex:1;padding:.6rem .75rem}.player-form__status{margin:0;font-size:.85rem;color:#475569}.player-form__status--taken,.player-form__status--error{color:#dc2626}.player-form__status--available{color:#16a34a}.player-form__error{margin:0;color:#dc2626;font-weight:600}.player-form__actions{display:flex;justify-content:flex-end;gap:.75rem}.player-form__actions button{border:none;border-radius:10px;padding:.6rem 1rem;font-weight:600;cursor:pointer}.player-form__actions button[type=button]{background:#e2e8f0;color:#1e293b}.player-form__actions button[type=submit]{background:#2563eb;color:#fff}.player-profile{background:#fff;border-radius:18px;padding:2rem;box-shadow:0 12px 32px #0f172a14;display:grid;gap:1.5rem}.player-profile__back{align-self:flex-start;border:none;background:transparent;color:#2563eb;font-weight:600;cursor:pointer}.player-profile__header{display:flex;align-items:center;gap:1.25rem}.player-profile__avatar{width:72px;height:72px;border-radius:50%;background:#e2e8f0;display:grid;place-items:center;font-size:2rem}.player-profile__identity h1{margin:0}.player-profile__identity p{margin:0;color:#475569}.player-profile__actions button{border:none;background:#2563eb;color:#fff;padding:.6rem 1rem;border-radius:10px;font-weight:600;cursor:pointer}.player-profile__status{margin:0;font-weight:600}.player-profile__status--error{color:#dc2626}.player-profile__status--success{color:#16a34a}.player-profile__status--info{color:#1d4ed8}.player-profile__details{display:grid;gap:1rem}.player-profile__details div{display:grid;gap:.35rem}.player-profile__details dt{font-weight:600;color:#1e293b}.player-profile__details dd{margin:0}.player-profile__language-resolved{display:block;font-size:.85rem;color:#475569}.player-profile__stats{background:#f8fafc;border-radius:16px;padding:1.25rem;border:1px solid #e2e8f0}.player-profile__stats h2{margin:0 0 .5rem}.player-profile__message{text-align:center;color:#475569}.player-profile__message--error{color:#dc2626}.create-game{background:#fff;border-radius:18px;padding:2rem;box-shadow:0 12px 32px #0f172a14;display:grid;gap:1.5rem}.create-game__title{margin:0}.create-game__subtitle{margin:0;color:#475569}.create-game__hint{margin:0;color:#6366f1;font-size:.9rem}.create-game__diag{background:#f1f5f9;border:1px dashed #94a3b8;border-radius:10px;padding:.75rem 1rem;font-size:.8rem;color:#334155}.create-game__diag summary{cursor:pointer;font-weight:600}.create-game__diag ul{margin:.5rem 0 0;padding-left:1rem;display:grid;gap:.25rem}.create-game__form{display:grid;gap:1.5rem}.create-game__grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.create-game__card{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"title title" "avatar fields";align-items:start;gap:1rem;background:#f8fafc;padding:1rem;border-radius:16px;box-shadow:inset 0 0 0 1px #e2e8f0}.create-game__card-title{grid-area:title;margin:0;font-size:.95rem;font-weight:600;color:#1e293b}.create-game__avatar{grid-area:avatar;width:48px;height:48px;border-radius:16px;background:#e2e8f0;display:grid;place-items:center;font-size:2rem;line-height:1}.create-game__fields{grid-area:fields;display:grid;gap:.75rem}.create-game__field{display:grid;gap:.25rem}.create-game__field--wide{max-width:420px}.create-game__field label{font-weight:600;color:#1e293b}.create-game__input-group{display:flex;align-items:center;border:1px solid #cbd5e1;border-radius:10px;overflow:hidden;background:#fff}.create-game__prefix{padding:.5rem .7rem;background:#e2e8f0;color:#1e293b;font-weight:600}.create-game input{padding:.6rem .75rem;border-radius:10px;border:1px solid #cbd5e1;width:100%}.create-game__input-group input{border:none;flex:1;width:100%}.create-game__help{margin:0;font-size:.85rem;color:#64748b}.create-game__error{margin:0;color:#dc2626;font-weight:600}.create-game__message{text-align:center;color:#475569}.create-game__message--error{color:#dc2626}.create-game__form button[type=submit]{justify-self:flex-end;border:none;background:#2563eb;color:#fff;padding:.75rem 1.25rem;border-radius:12px;font-weight:600;cursor:pointer}.settings{background:#fff;border-radius:18px;padding:2rem;box-shadow:0 12px 32px #0f172a14;display:grid;gap:1.5rem}.settings__header{display:grid;gap:.35rem}.settings__header h1{margin:0}.settings__header p{margin:.25rem 0 0;color:#475569}.settings__section{display:grid;gap:1rem}.settings__section h2{margin:0;font-size:1.05rem}.settings__hint{margin:0;color:#64748b;font-size:.9rem}.settings__field{display:grid;gap:.35rem;max-width:520px}.settings__field label{font-weight:600;color:#1e293b}.settings__field input{padding:.6rem .75rem;border-radius:10px;border:1px solid #cbd5e1;font-size:.95rem}.settings__field input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1f}.settings__link{justify-self:flex-start;padding:.4rem .8rem;border-radius:8px;border:1px solid #2563eb;color:#2563eb;text-decoration:none;font-weight:600;font-size:.9rem}.settings__link:hover,.settings__link:focus{background:#2563eb1a}.settings__button{justify-self:flex-start;padding:.6rem 1.1rem;border-radius:10px;border:1px solid #2563eb;background:#2563eb;color:#fff;font-weight:600;font-size:.95rem;cursor:pointer;transition:background .2s ease,border-color .2s ease}.settings__button:hover:not(:disabled),.settings__button:focus-visible:not(:disabled){background:#1d4ed8;border-color:#1d4ed8}.settings__button:disabled{cursor:not-allowed;background:#e2e8f0;border-color:#cbd5e1;color:#64748b}.settings__config{width:100%;max-width:520px;min-height:160px;border-radius:12px;border:1px solid #cbd5e1;padding:.75rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;background:#f8fafc;color:#0f172a}.load,.load__grid{display:grid;gap:1.5rem}.load__section{background:#fff;border-radius:18px;padding:2rem;box-shadow:0 12px 32px #0f172a14;display:grid;gap:1rem}.load__form{display:grid;gap:.75rem}.load__file-input{display:grid;gap:.35rem}.load__file-input-native{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.load__file-trigger{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;border:1px dashed #cbd5e1;background:#fff;color:#1f2937;padding:.6rem .75rem;border-radius:10px;font-weight:600;cursor:pointer}.load__file-trigger[data-disabled=true]{opacity:.6;cursor:not-allowed;pointer-events:none}.load__file-name{font-size:.9rem;color:#475569;word-break:break-word}.load__form-row{display:flex;gap:.5rem;align-items:center}.load__form-row input{flex:0 0 9ch;padding:.6rem .75rem;border-radius:10px;border:1px solid #cbd5e1}.load__form-row button{border:none;background:#2563eb;color:#fff;padding:.6rem 1.1rem;border-radius:10px;font-weight:600;cursor:pointer}.load__form button[type=submit]{border:none;background:#2563eb;color:#fff;padding:.6rem 1.1rem;border-radius:10px;font-weight:600;cursor:pointer;align-self:flex-start}.load__form button[disabled],.load__form-row button[disabled]{opacity:.6;cursor:not-allowed}.load__error{margin:0;color:#dc2626}.load__error-detail{margin:0;color:#b91c1c;font-size:.85rem}.load__notice{margin:0;color:#475569;font-style:italic}.load__empty{margin:0;color:#475569}.load__list{list-style:none;margin:0;padding:0;display:grid;gap:1rem}.load__import-preview{border:1px solid #e2e8f0;background:#f8fafc;border-radius:12px;padding:.75rem 1rem;display:grid;gap:.5rem}.load__import-preview-title{margin:0;font-weight:600;color:#1e293b}.load__import-summary{margin:0;display:grid;gap:.35rem}.load__import-summary>div{display:flex;justify-content:space-between;gap:.5rem}.load__import-summary dt{font-weight:600;color:#475569}.load__import-summary dd{margin:0;color:#0f172a;word-break:break-word}@media (min-width: 960px){.load__grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}}.load__item{border:1px solid #e2e8f0;border-radius:14px;overflow:hidden}.load__item-header{width:100%;border:none;background:#f8fafc;padding:.8rem 1rem;display:flex;justify-content:space-between;font-weight:600;cursor:pointer}.load__item-body{display:grid;gap:1rem;padding:1rem}.load__game-details{margin:0;display:grid;gap:.5rem}.load__game-details>div{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;flex-wrap:wrap}.load__game-details dt{font-weight:600;color:#475569}.load__game-details dd{margin:0;color:#0f172a}.load__game-scores{margin:0;display:flex;flex-wrap:wrap;gap:.5rem;color:#0f172a}.load__game-scores-label{font-weight:600;color:#475569}.load__game-scores span:last-child{flex:1 1 100%;min-width:0;word-break:break-word}.load__item-column{display:grid;gap:.5rem}.load__players-list{list-style:none;margin:0;padding:0;display:grid;gap:.35rem;color:#475569}.load__continue{justify-self:flex-start;border:none;background:#2563eb;color:#fff;padding:.6rem 1rem;border-radius:10px;font-weight:600;cursor:pointer}.gamepad{background:#fff;border-radius:18px;padding:1.5rem;box-shadow:0 20px 55px #0f172a14;display:flex;flex-direction:column;gap:1.5rem}.gamepad__header{display:flex;justify-content:space-between;align-items:center;gap:1rem}.gamepad__state{padding:.35rem .75rem;border-radius:999px;background:#e0e7ff;color:#3730a3;font-weight:600;font-size:.85rem}.gamepad__layout{display:flex;align-items:flex-start;gap:1rem}.gamepad__board{display:flex;align-items:flex-start;gap:1rem;flex:1 1 auto}.cell{padding:.75rem;border-radius:12px;background:#f1f5f9;min-height:60px;display:flex;align-items:center;justify-content:center;text-align:center;font-weight:500;color:#1f2937;box-sizing:border-box}.cell--header{background:#eff6ff;color:#1d4ed8;display:flex;flex-direction:column;gap:.25rem;font-weight:600}.player-name{font-weight:600}.player-seat{font-size:.75rem;color:#64748b}.cell--sum{font-weight:700;gap:.3rem}.cell--exact{background:#ecfdf3;color:#15803d;font-weight:600}.cell--sum-blocked{background:#fee2e2;color:#b91c1c}.cell--sum-high{background:#fee2e2;color:#991b1b}.cell--active{outline:3px solid rgba(37,99,235,.45);box-shadow:0 0 0 4px #2563eb1f;background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1d4ed8;font-weight:700}.gamepad__context{background:#f8fafc;border-radius:14px;padding:1rem;display:grid;gap:.4rem;font-size:.95rem}.gamepad__grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.75rem;align-items:stretch}.gamepad__submission{flex:0 0 240px;max-width:240px;min-width:220px;width:100%;display:flex}.submission-panel{display:flex;flex-direction:column;gap:.8rem;padding:1.1rem;border-radius:16px;background:#f1f5f9;box-shadow:none;min-height:148px;width:100%;overflow:visible;height:100%;align-items:center;text-align:center}.submission-panel__title{margin:0;font-size:.95rem;font-weight:600;color:#0f172a}.submission-panel__form{display:grid;grid-auto-flow:column;gap:.55rem;width:100%;align-items:center;justify-content:center}.submission-panel__input{margin:0;border:2px solid #cbd5f5;border-radius:12px;padding:.65rem .85rem;font-size:1rem;font-weight:600;color:#1f2937;background:#fff;transition:border-color .15s ease,box-shadow .15s ease;width:72px;min-width:64px;box-sizing:border-box;text-align:center}.submission-panel__input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb33}.submission-panel__input:disabled{background:#e2e8f0;color:#64748b;cursor:not-allowed}.submission-panel__button{display:grid;place-items:center;border:none;border-radius:12px;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;font-size:1rem;font-weight:600;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,opacity .2s ease;width:36px;height:36px;min-width:36px;box-sizing:border-box;padding:0}.submission-panel__button--wide{width:76px;min-width:76px}.submission-panel__button:disabled{cursor:not-allowed;opacity:.5;box-shadow:none}.submission-panel button:focus,.submission-panel__input:focus-visible{outline:none}.submission-panel__button:not(:disabled):hover{transform:translateY(-1px);box-shadow:none}.submission-panel__lock{flex:1;padding:.85rem 1rem;border:none;border-radius:12px;font-weight:700;font-size:.95rem;background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,opacity .2s ease}.submission-panel__lock:disabled{cursor:not-allowed;opacity:.55;box-shadow:none}.submission-panel__lock:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 14px 32px #22c55e52}.submission-panel__status{margin:0;font-size:.9rem;font-weight:500;text-align:center}.submission-panel__nav{display:flex;justify-content:center;gap:.6rem}.submission-panel__nav-button{width:36px;height:36px;min-width:36px;border-radius:999px;border:2px solid #cbd5f5;background:#e2e8f0;color:#0f172a;font-size:1rem;font-weight:600;display:grid;place-items:center;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,opacity .2s ease}.submission-panel__nav-button:disabled{cursor:not-allowed;opacity:.5;box-shadow:none}.submission-panel__nav-button:not(:disabled):hover{transform:translateY(-1px);box-shadow:none}.submission-panel__warning{margin:.75rem 0 0;padding:.5rem .75rem;border-radius:10px;background:#fbbf2433;color:#92400e;font-size:.95rem}.submission-panel__fill{width:36px;height:36px;min-width:36px;border-radius:12px;border:2px solid #cbd5f5;background:#fff;color:#1f2937;font-size:1rem;font-weight:600;display:grid;place-items:center;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,opacity .2s ease}.submission-panel__fill:disabled{cursor:not-allowed;opacity:.5;box-shadow:none}.submission-panel__fill:not(:disabled):hover{transform:translateY(-1px);box-shadow:none}.submission-panel__lock-row{display:flex;align-items:center;justify-content:center;gap:.75rem;width:100%}.submission-panel__edit{flex:1;padding:.85rem 1rem;border-radius:12px;border:none;font-weight:700;font-size:.95rem;cursor:pointer;background:linear-gradient(135deg,#38bdf8,#2563eb);color:#fff;transition:transform .15s ease,box-shadow .15s ease,opacity .2s ease}.submission-panel__edit:disabled{cursor:not-allowed;opacity:.5;box-shadow:none}.submission-panel__edit:not(:disabled):hover{transform:translateY(-1px);box-shadow:none}.submission-panel__status--idle{color:#475569}.submission-panel__status--pending{color:#2563eb}.submission-panel__status--success{color:#15803d}.submission-panel__status--error{color:#b91c1c}.gamepad__meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.6rem}.gamepad__meta p{margin:0;padding:.6rem .8rem;border-radius:12px;background:#f8fafc;color:#334155}.gamepad__footer{text-align:right;color:#64748b;font-size:.85rem}.gamepad__message{text-align:center;color:#475569}.gamepad__header h2{margin:0;font-size:1.35rem}.status{font-size:.9rem;color:#2563eb}.status--active{font-weight:600}.gamepad__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.6rem;align-items:stretch}.cell{padding:.75rem;border-radius:12px;background:#f8fafc;min-height:60px;display:flex;align-items:center;justify-content:center;text-align:center;font-weight:500;color:#1f2937;box-sizing:border-box}.cell--header{background:transparent;color:#64748b;font-size:.9rem;font-weight:600}.cell--label-heading{background:#eef2ff;color:#312e81;font-weight:600}.cell--name{background:transparent;color:#1f2937;font-weight:600;font-size:.95rem;flex-direction:column;justify-content:center;gap:.35rem}.cell__player-emoji{font-size:1.75rem;line-height:1}.cell__player-name{display:block;color:#1f2937;font-weight:600;font-size:.95rem}.cell--empty{background:transparent;box-shadow:none}.cell--label{background:#eef2ff;color:#312e81;font-weight:600}.cell--readonly{background:#f1f5f9;color:#475569}.cell--tasks{font-size:1.45rem}.cell__tasks-badges{display:inline-flex;align-items:center;justify-content:center;gap:.35rem}.cell__tasks-emoji{line-height:1}.cell__tasks-placeholder{color:#94a3b8;font-size:.85rem}.cell--editable{background:linear-gradient(135deg,#e0f2fe,#dbeafe)}.cell input{width:100%;border:none;background:transparent;font-size:1rem;text-align:center;color:#0f172a}.cell input:disabled{color:#94a3b8}.cell input:focus{outline:none;box-shadow:inset 0 0 0 2px #2563eb4d;border-radius:10px}.cell--sum{font-weight:700;gap:.35rem}.cell--sum-neutral{background:#e2e8f0;color:#475569}.cell--sum-ok{background:#dcfce7;color:#166534}.cell--sum-blocked{background:#fee2e2;color:#991b1b}.cell--sum-high{background:#fee2e2;color:#b91c1c}.cell__sum-value{font-size:.85rem;font-weight:500}.score{display:flex;flex-direction:column;gap:.35rem;align-items:center;justify-content:flex-end;font-size:.95rem;min-height:2.5rem}.score>span:last-child{margin-top:auto}.cell--sum{padding:.75rem .5rem;font-size:.9rem;white-space:nowrap;gap:.25rem}.gamepad__actions{display:flex;gap:1rem;justify-content:flex-end}.action-button{padding:.8rem 1.4rem;border-radius:12px;border:none;font-weight:600;cursor:pointer;background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;transition:transform .15s ease,box-shadow .15s ease,opacity .2s ease}.action-button:disabled{cursor:not-allowed;opacity:.5;box-shadow:none}.action-button:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 12px 35px #22c55e4d}.gamepad__errors{display:flex;flex-direction:column;gap:.35rem}.error-message{margin:0;font-size:.9rem;color:#b91c1c}.welcome{display:flex;flex-direction:column;gap:1.5rem}.welcome__title{margin:0;text-align:center;font-size:clamp(1.5rem,2vw + 1rem,2.2rem)}.welcome__cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1.5rem}.welcome__card{background:#fff;border-radius:18px;padding:1.5rem;box-shadow:0 20px 45px #0f172a1a;display:flex;flex-direction:column;gap:1.25rem}.welcome__card-header h3{margin:0}.welcome__form{display:flex;flex-direction:column;gap:1rem}.welcome__players{display:grid;gap:.75rem}.welcome__player-field{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.welcome__player-input{display:grid;gap:.35rem}.welcome__player-input span{font-weight:600;color:#1e293b}.welcome__player-input input{padding:.6rem .7rem;border-radius:10px;border:1px solid #cbd5e1;font-size:.95rem}.welcome__player-input input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px #2563eb26}.form-error{margin:0;color:#b91c1c;font-size:.9rem}.welcome__active{display:flex;flex-direction:column;gap:.75rem}.welcome__empty{margin:0;color:#64748b}.welcome__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.welcome__list-item{border:1px solid #e2e8f0;border-radius:14px;overflow:hidden}.welcome__accordion{width:100%;background:#f8fafc;padding:.9rem 1rem;border:none;display:flex;justify-content:space-between;align-items:center;cursor:pointer}.welcome__meta{margin:0;color:#64748b;font-size:.85rem}.welcome__accordion-icon{font-size:1.25rem}.welcome__details{padding:1rem;display:grid;gap:.75rem;background:#fff}.welcome__players-list{list-style:none;margin:0;padding:0;display:grid;gap:.4rem;font-size:.95rem}.welcome__continue{align-self:flex-start;padding:.6rem 1.1rem;border-radius:10px;border:none;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;font-weight:600;cursor:pointer}.welcome__continue:hover{box-shadow:0 10px 25px #2563eb40}.lobby{background:#fff;border-radius:18px;padding:1.5rem;box-shadow:0 18px 45px #0f172a1a;display:flex;flex-direction:column;gap:1.25rem}.lobby__header{display:flex;justify-content:space-between;align-items:center;gap:1rem}.lobby__state{display:inline-block;padding:.2rem .6rem;border-radius:999px;background:#eef2ff;color:#3730a3;font-size:.8rem;font-weight:600}.lobby__actions{display:flex;flex-direction:column;gap:.3rem;align-items:flex-end}.lobby__copy{padding:.5rem 1rem;border-radius:8px;border:none;background:#2563eb;color:#fff;font-weight:600}.lobby__copy-status{font-size:.85rem;color:#16a34a}.lobby__copy-status--error{color:#b91c1c}.lobby__board{background:#f8fafc;border-radius:14px;padding:1.25rem;display:grid;gap:.85rem}.lobby__board-row{display:grid;gap:.85rem;text-align:center}.lobby__board-cell{padding:.9rem .75rem;border-radius:12px;background:#fff;box-shadow:inset 0 1px #fff9}.lobby__board-cell--name{font-weight:600;color:#0f172a}.lobby__board-cell--score{font-size:1.1rem;font-weight:600;color:#2563eb}.lobby__footer{display:flex;justify-content:flex-end}.lobby__continue{padding:.7rem 1.4rem;border-radius:10px;border:none;background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;font-weight:600;cursor:pointer}.lobby__message{text-align:center;color:#475569}.gamepage{background:#fff;border-radius:18px;padding:1.5rem;box-shadow:0 20px 55px #0f172a14;display:flex;flex-direction:column;gap:1rem}.gamepage__header{display:flex;justify-content:space-between;align-items:center;gap:1rem}.gamepage__nav{display:flex;gap:.5rem}.gamepage__tab{padding:.5rem .9rem;border-radius:999px;border:none;background:#e2e8f0;color:#1f2937;font-weight:600}.gamepage__tab--active{background:#2563eb;color:#fff}.gamepage__content{display:flex;flex-direction:column;gap:1rem}@media (max-width: 960px){.gamepad__grid{overflow-x:auto;padding-bottom:.5rem}}@media (max-width: 640px){.app__controls{flex-direction:column;align-items:stretch}.app__form,.app__side-controls{width:100%}.site-header{flex-direction:column;align-items:flex-start;gap:1rem}.site-header__controls{flex-wrap:wrap;gap:.5rem 1rem}.welcome__cards{grid-template-columns:1fr}}.scorecard{display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.scorecard__table{background:#fff;border-radius:16px;padding:1.25rem;box-shadow:0 18px 45px #0f172a14;overflow-x:auto}.scorecard__toolbar{display:flex;align-items:center;gap:.5rem;margin:0 0 1rem}.scorecard__toolbar--inline{margin:0}.scorecard__view-text{font-size:.75rem;color:#64748b}.scorecard__view-text--active{color:#1f2937;font-weight:600}.scorecard__switch{position:relative;display:inline-flex;align-items:center;cursor:pointer}.scorecard__switch input{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;clip:rect(0 0 0 0);overflow:hidden}.scorecard__switch-rail{display:inline-flex;align-items:center;width:2.5rem;height:1.4rem;padding:0 .125rem;border-radius:9999px;background:#cbd5f5;border:1px solid #cbd5f5;transition:background-color .2s ease,border-color .2s ease}.scorecard__switch-thumb{width:1rem;height:1rem;border-radius:9999px;background:#fff;box-shadow:0 1px 2px #0f172a40;transform:translate(0);transition:transform .2s ease}.scorecard__switch input:checked+.scorecard__switch-rail{background:#1f2937;border-color:#1f2937}.scorecard__switch input:checked+.scorecard__switch-rail .scorecard__switch-thumb{transform:translate(1.1rem)}.scorecard__switch input:focus-visible+.scorecard__switch-rail{outline:2px solid #6366f1;outline-offset:2px}.gamepage__controls{display:flex;align-items:center;gap:.75rem}.scorecard__table-title{margin:0 0 .55rem;font-size:.88rem;font-weight:600;color:#0f172a}.scorecard__grid{width:100%;border-collapse:collapse;font-size:.75rem}.scorecard__header{padding:.25rem;background:#e2e8f0;color:#334155;font-weight:600;text-align:center}.scorecard__header--label{width:44px}.scorecard__deal{padding:.24rem .35rem;text-align:center;background:#f1f5f9;font-weight:600;color:#1f2937;border-bottom:1px solid #e2e8f0}.scorecard__cell{padding:.22rem .35rem;text-align:center;min-width:54px;border-bottom:1px solid #f1f5f9;background:var(--cell-color-base, #ffffff)}.scorecard__cell--grey{background:var(--cell-color-grey, #e2e8f0)}.scorecard__cell--green{background:var(--cell-color-green, #bbf7d0);color:#047857;font-weight:600}.scorecard__cell--sum{font-weight:600;background:#e0f2fe;color:#1d4ed8}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.feedback-fab{position:fixed;right:24px;bottom:24px;z-index:90;padding:12px 20px;border:none;border-radius:999px;background:#1a73e8;color:#fff;font-size:16px;font-weight:600;cursor:pointer;box-shadow:0 6px 16px #0003;transition:transform .2s ease,box-shadow .2s ease}.backend-status{position:fixed;right:24px;bottom:88px;z-index:85;display:flex;align-items:center;gap:12px;max-width:min(360px,calc(100vw - 48px));padding:10px 16px;border-radius:999px;background:#1f2937;color:#f8fafc;box-shadow:0 10px 24px #0f172a3d;font-size:14px;line-height:1.4;animation:backend-status-fade-in .2s ease}.backend-status__icon{width:12px;height:12px;border-radius:999px;background:#facc15;box-shadow:0 0 0 2px #facc1547;position:relative}.backend-status--pending .backend-status__icon:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:999px;border:2px solid rgba(248,250,252,.4);border-top-color:#f8fafce6;animation:backend-status-spin 1s linear infinite}.backend-status--success{background:#047857;color:#ecfdf5}.backend-status--success .backend-status__icon{background:#bbf7d0;box-shadow:0 0 0 2px #bbf7d052}.backend-status--success .backend-status__icon:after{content:"✔";position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:10px;color:#065f46}.backend-status--error{background:#b91c1c;color:#fef2f2}.backend-status--error .backend-status__icon{background:#fecaca;box-shadow:0 0 0 2px #fecaca52}.backend-status--error .backend-status__icon:after{content:"!";position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:10px;color:#7f1d1d}.backend-status__message{flex:1;word-break:break-word}.backend-status__actions{display:flex;gap:8px}.backend-status__action{background:transparent;border:none;color:inherit;font-weight:600;font-size:13px;cursor:pointer;text-decoration:underline;padding:0}.backend-status__action:focus,.backend-status__action:hover{text-decoration:none}@keyframes backend-status-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes backend-status-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.feedback-fab:focus,.feedback-fab:hover{outline:none;transform:translateY(-1px);box-shadow:0 10px 20px #0000003d}.feedback-modal{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;z-index:100}.feedback-modal__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0f172a8f}.feedback-modal__container{position:relative;width:min(92vw,640px);max-height:90vh;background:#fff;border-radius:16px;box-shadow:0 24px 48px #0f172a3d;display:flex;flex-direction:column;overflow:hidden}.feedback-modal__header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 12px;border-bottom:1px solid rgba(15,23,42,.08)}.feedback-modal__header h2{margin:0;font-size:22px}.feedback-modal__close{border:none;background:transparent;font-size:28px;line-height:1;cursor:pointer;padding:4px;border-radius:8px}.feedback-modal__close:focus,.feedback-modal__close:hover{background:#0f172a14}.feedback-modal__body{padding:20px 24px 24px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.feedback-modal__fieldset{border:none;margin:0;padding:0;display:flex;gap:16px;flex-wrap:wrap}.feedback-modal__legend{font-weight:600;margin-bottom:4px}.feedback-modal__radio{display:flex;align-items:center;gap:8px;font-weight:500}.feedback-modal__label{display:flex;flex-direction:column;gap:6px;font-weight:600}.feedback-modal__label input,.feedback-modal__label textarea{padding:10px 12px;border:1px solid rgba(15,23,42,.16);border-radius:8px;font-size:16px;font-family:inherit}.feedback-modal__label textarea{resize:vertical;min-height:120px}.feedback-modal__counter{font-size:14px;color:#0f172ab3}.feedback-modal__metadata{border:1px solid rgba(15,23,42,.16);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:12px}.feedback-modal__metadata-toggle{display:flex;align-items:center;gap:8px;font-weight:600}.feedback-modal__metadata-collapse{align-self:flex-start;border:none;background:transparent;color:#1a73e8;font-weight:600;cursor:pointer}.feedback-modal__metadata-preview{max-height:240px;overflow:auto;background:#f8fafc;border-radius:8px;padding:12px;font-size:13px}.feedback-modal__error{color:#b91c1c;font-weight:500;margin:-8px 0 0}.feedback-modal__hint{font-size:15px;color:#0f172acc}.feedback-modal__actions{display:flex;justify-content:flex-end;gap:12px;margin-top:auto}.button{border:none;border-radius:12px;background:#1a73e8;color:#fff;padding:10px 18px;font-weight:600;cursor:pointer;transition:background .2s ease}.button:hover,.button:focus{background:#1558b0}.button--ghost{background:transparent;color:#1a73e8;border:1px solid #1a73e8}.button--ghost:hover,.button--ghost:focus{background:#1a73e814}.feedback-modal__post-submit{display:flex;flex-direction:column;gap:12px;margin-top:24px}.feedback-modal__post-submit-text{font-weight:600}.feedback-modal__mailto{display:inline-flex;align-items:center;justify-content:center;padding:12px 18px;border-radius:999px;background:#1a73e8;color:#fff;font-weight:600;text-decoration:none}.feedback-modal__mailto:hover,.feedback-modal__mailto:focus{opacity:.9}.feedback-modal__fine-print{font-size:13px;color:#0f172ab3}.feedback-page{max-width:48rem;margin:2rem auto;padding:2rem;display:flex;flex-direction:column;gap:1.5rem}.feedback-page__title{font-size:clamp(1.75rem,2vw,2.25rem);margin:0}.feedback-page__description{margin:0;color:#0f172ab3}.toast-viewport{position:fixed;right:24px;bottom:24px;display:flex;flex-direction:column;gap:12px;z-index:110;width:min(320px,calc(100vw - 32px))}.unknown{max-width:48rem;margin:2rem auto;padding:2rem;display:flex;flex-direction:column;gap:1.5rem}.unknown__description{margin:0;color:#0f172ab3}.unknown__card{border:1px solid rgba(15,23,42,.1);border-radius:12px;padding:1.5rem;background:#fff;box-shadow:0 12px 30px #0f172a14;display:flex;flex-direction:column;gap:1rem}.unknown__card-body{display:flex;flex-direction:column;gap:1rem}.unknown__muted{margin:0;color:#0f172ab3}.toast{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-radius:12px;box-shadow:0 12px 24px #0f172a26;color:#0f172a;background:#f8fafc;font-weight:500}.toast--success{background:#ecfdf5;color:#065f46}.toast--warning{background:#fffbeb;color:#92400e}.toast--error{background:#fef2f2;color:#991b1b}.toast__dismiss{border:none;background:transparent;font-size:18px;cursor:pointer;line-height:1;color:inherit}@media (max-width: 640px){.feedback-modal__container{width:100vw;height:100vh;max-height:none;border-radius:0}.feedback-modal__body{padding:24px}.feedback-fab{right:16px;bottom:16px}.role-badge{width:2rem;height:2rem;font-size:1.1rem}}.gamepage__view-select{display:inline-flex;align-items:center;background:#fff;border-radius:12px;padding:.35rem .6rem;box-shadow:0 10px 25px #0f172a14}.gamepage__view-select select{border:none;font-size:.95rem;font-weight:600;background:transparent;color:#1f2937;outline:none}.gamepad-mobile{background:#fff;border-radius:18px;padding:1.25rem;box-shadow:0 18px 48px #0f172a14;display:flex;flex-direction:column;gap:1.25rem}.gamepad-mobile__table{display:block}.gamepad-mobile__grid{display:grid;grid-template-columns:minmax(0,var(--col-player, 1.6fr)) minmax(60px,var(--col-score, .75fr)) minmax(64px,var(--col-tasks, .75fr)) minmax(52px,var(--col-bids, .65fr)) minmax(52px,var(--col-results, .65fr));grid-auto-rows:minmax(44px,auto);background:#e2e8f0;border-radius:16px;padding:.5rem;gap:.5rem}.gamepad-mobile__cell{display:flex;align-items:center;justify-content:center;padding:.5rem;border-radius:12px;background:#f8fafc;color:#1f2937;font-weight:500;font-size:.9rem;text-align:center}.gamepad-mobile__cell--header{flex-direction:column;justify-content:flex-end;gap:.35rem;background:#eef2ff;color:#312e81;font-weight:600;letter-spacing:.05em;padding:.35rem .25rem .45rem}.gamepad-mobile__cell--header--sticky{position:sticky;top:0;z-index:2}.gamepad-mobile__header-emoji{font-size:1.65rem;line-height:1}.gamepad-mobile__header-label{font-size:.65rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;line-height:1.1}.gamepad-mobile__cell--player{justify-content:flex-start;gap:.65rem;background:#fff;font-weight:600}.gamepad-mobile__emoji{font-size:1.75rem;line-height:1}.gamepad-mobile__name{font-size:.95rem;color:#0f172a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gamepad-mobile__cell--score{background:#eff6ff;justify-content:center}.gamepad-mobile__cell--task{background:#eff6ff;color:#475569;flex-direction:column;gap:.25rem}.gamepad-mobile__cell--task.is-empty{color:#94a3b8}.gamepad-mobile__task-badges{display:inline-flex;align-items:center;justify-content:center;gap:.3rem;font-size:1.6rem}.gamepad-mobile__task-emoji{line-height:1}.gamepad-mobile__task-placeholder{font-size:.8rem}.gamepad-mobile__cell--editable{border:none;background:#eff6ff;font:inherit;color:inherit;cursor:pointer;transition:background .2s ease,box-shadow .2s ease;justify-content:center;text-align:center}.gamepad-mobile__cell--editable:disabled{cursor:default;opacity:.5}.gamepad-mobile__cell--editable.is-editable:not(:disabled):hover,.gamepad-mobile__cell--editable.is-editable:not(:disabled):focus-visible{background:#dbeafe;box-shadow:0 0 0 3px #3b82f659}.gamepad-mobile__cell--editable.is-active{background:linear-gradient(135deg,#dbeafe,#bfdbfe);box-shadow:0 0 0 4px #2563eb2e;color:#1d4ed8;font-weight:700}.gamepad-mobile__cell--result.is-exact{background:#ecfdf3;color:#15803d;font-weight:700}.gamepad-mobile__cell--sum{background:#f1f5f9;flex-direction:column;gap:.2rem;font-weight:600;font-size:.85rem}.gamepad-mobile__cell--sum-placeholder{background:transparent;border:none;visibility:hidden}.gamepad-mobile__sum-value{font-size:.95rem}.gamepad-mobile__cell--sum.is-ok{background:#dcfce7;color:#166534}.gamepad-mobile__cell--sum.is-blocked{background:#fee2e2;color:#b91c1c}.gamepad-mobile__cell--sum.is-high{background:#fee2e2;color:#991b1b}.gamepad-mobile__cell--sum.is-neutral{background:#e2e8f0;color:#475569}.gamepad-mobile__input{display:flex}.gamepad-mobile__errors{display:grid;gap:.5rem}.gamepad-mobile__footer{font-size:.8rem;color:#64748b;text-align:right}@media (max-width: 420px){.gamepad-mobile{padding:1rem;gap:1rem}.gamepad-mobile__grid{padding:.4rem;gap:.4rem;grid-template-columns:minmax(0,var(--col-player, 1.45fr)) minmax(52px,var(--col-score, .7fr)) minmax(56px,var(--col-tasks, .75fr)) repeat(2,minmax(44px,.6fr))}.gamepad-mobile__cell{font-size:.85rem;padding:.45rem}.gamepad-mobile__emoji{font-size:1.6rem}.gamepad-mobile__header-emoji{font-size:1.45rem}.gamepad-mobile__header-label{font-size:.58rem}}.gamepad-mobile__cell--score,.gamepad-mobile__cell--editable{justify-content:center}.gamepad-mobile__cell--result{position:relative}.gamepad-mobile__sum-label{font-size:.75rem;color:#475569}.game-info{margin-top:1.5rem;background:#f8fafc;border-radius:16px;padding:1.25rem;box-shadow:0 18px 45px #0f172a14}.game-info__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.game-info__collapse{background:#e2e8f0;border:none;border-radius:9999px;color:#1f2937;cursor:pointer;font-size:.75rem;padding:.25rem .75rem;transition:background-color .2s ease,color .2s ease}.game-info__collapse:hover{background:#cbd5f5}.game-info__collapse:focus-visible{outline:2px solid #6366f1;outline-offset:2px}.game-info__body{display:flex;flex-direction:column;gap:1rem}.game-info--collapsed{padding-bottom:.75rem}.game-info__details{display:flex;flex-wrap:wrap;gap:1.5rem;justify-content:space-between}.game-info__meta{display:grid;gap:.35rem}.game-info__meta dt{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:#64748b}.game-info__meta dd{margin:0;font-size:.95rem;color:#0f172a}.game-info__actions{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-start}.game-info__button{background:#e2e8f0;border:none;border-radius:9999px;color:#1f2937;cursor:pointer;font-size:.85rem;padding:.35rem .9rem;transition:background-color .2s ease,color .2s ease}.game-info__button:hover:not(:disabled){background:#cbd5f5}.game-info__button:disabled{opacity:.6;cursor:not-allowed}.game-info__status{margin-top:.75rem;font-size:.85rem;color:#0f172a}.game-info__error{margin-top:.75rem;font-size:.85rem;color:#b91c1c}.game-info__audits{margin-top:1.5rem;border-top:1px solid #e2e8f0;padding-top:1rem;max-height:320px;overflow-y:auto}.game-info__audit-group{margin-bottom:1rem}.game-info__audit-list{list-style:none;padding:0;margin:0;display:grid;gap:.85rem}.game-info__audit-item{background:#fff;border-radius:12px;padding:.75rem;box-shadow:0 12px 28px #0f172a0f}.game-info__audit-header{display:flex;justify-content:space-between;align-items:center;gap:.75rem;font-size:.85rem;font-weight:600;color:#0f172a}.game-info__audit-body{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-top:.75rem}.game-info__audit-label{display:block;margin-bottom:.35rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:#64748b}.game-info__audit-body pre{margin:0;background:#f8fafc;border-radius:8px;padding:.5rem;font-size:.7rem;line-height:1.35;max-height:200px;overflow:auto}
