.grid-square{position:relative;aspect-ratio:1;min-width:0;border:1px solid var(--border-color);border-radius:var(--player-cell-radius);display:flex;align-items:center;justify-content:center;background-color:var(--grid-cell-bg,#ffffff);touch-action:manipulation;cursor:pointer;overflow:hidden}.grid-square--block{background-color:var(--grid-block-bg,var(--color-espresso));border-color:var(--grid-block-bg,var(--color-espresso));border-radius:var(--player-cell-radius);cursor:default}.grid-square--invisible{background-color:transparent;border:none;cursor:default}.grid-square--cell{background-color:var(--grid-cell-bg,#ffffff);transition:background-color .15s ease-out}.grid-square--cell:hover{background-color:var(--player-cell-highlighted)}.grid-square--active-cell{background-color:var(--player-cell-selected);outline:2.5px solid var(--player-cell-selected-border);outline-offset:-1px;z-index:2}.grid-square--active-word{background-color:var(--player-cell-highlighted)}.grid-square--checked-wrong .grid-square__strike{position:absolute;top:50%;left:10%;right:10%;height:1.5px;background:var(--player-strike-color);transform:rotate(-30deg);pointer-events:none;z-index:3}.grid-square__clue-number{position:absolute;top:0;left:0;font-size:clamp(8px,1.8vw,12px);font-weight:700;line-height:1;padding:2px;color:var(--grid-clue-number,var(--color-espresso));font-family:var(--font-grid);z-index:1}.grid-square__circle{position:absolute;width:80%;height:80%;border:2px solid var(--border-color);border-radius:50%;pointer-events:none}.grid-square__letter{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:clamp(14px,4.5vw,28px);font-weight:600;font-family:var(--font-grid);text-transform:uppercase;color:var(--grid-text,var(--color-espresso));-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-square__letter--revealed{color:var(--player-revealed-color);font-style:italic}@media (max-width:480px){.grid-square{min-width:0}}.grid-container{display:grid;grid-gap:1px;gap:1px;width:100%;max-width:100%;margin:0 auto;aspect-ratio:auto;padding:0;border-radius:var(--player-radius);overflow:hidden;border:2px solid var(--border-color);background:var(--border-color);position:relative}.grid-container:focus-within{outline:3px solid var(--player-accent);outline-offset:2px}.grid__hidden-input{position:absolute;opacity:0;width:1px;height:1px;overflow:hidden;pointer-events:none;top:0;left:0}.grid-loading{display:flex;align-items:center;justify-content:center;padding:2rem;font-size:1.1rem;color:var(--text-secondary)}@media (max-width:480px){.grid-container{max-width:100%;border-width:1px}}@media (max-width:360px){.grid-container{padding:0}}.clue-bar{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:var(--player-bg);border:1px solid var(--border-color);border-radius:var(--player-radius);width:100%;box-sizing:border-box;min-height:56px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:pan-y}.clue-bar:active{background:var(--player-cell-highlighted)}.clue-bar__content{display:flex;flex-direction:column;flex:1 1;gap:.125rem;min-width:0}.clue-bar__label{font-size:.75rem;font-weight:700;color:var(--player-accent);text-transform:uppercase;letter-spacing:.05em;text-align:center;display:block}.clue-bar__text{font-size:1rem;color:var(--text-primary);line-height:1.5;text-align:center;display:block}.clue-bar__hint{font-size:.7rem;color:var(--text-secondary);opacity:.6;text-align:center;display:block}.clue-bar__nav-btn{flex-shrink:0;width:40px;height:40px;padding:0;border:1px solid var(--border-color);background-color:var(--surface-primary);border-radius:var(--player-radius-sm);cursor:pointer;font-size:1.2rem;display:flex;align-items:center;justify-content:center;transition:all .15s ease;min-width:44px;min-height:44px}.clue-bar__nav-btn:hover{background-color:var(--player-cell-highlighted);border-color:var(--player-accent)}.clue-bar__nav-btn:active{background-color:var(--player-cell-selected)}@media (max-width:768px){.clue-bar__nav-btn{display:none}.clue-bar{justify-content:center;position:-webkit-sticky;position:sticky;top:0;z-index:10}}@media (min-width:769px){.clue-bar__hint{display:none}}.clues-list{flex:1 1;overflow-y:auto;display:flex;flex-direction:column;gap:0}.clues-section{border-bottom:1px solid var(--border-color)}.clues-section:last-child{border-bottom:none}.clues-section__title{display:flex;align-items:center;padding:.75rem 1rem;margin:0;font-size:1.05rem;font-weight:700;color:var(--color-espresso);background-color:var(--player-bg);border-bottom:1px solid var(--border-color)}.clues-list__items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.clue-item{display:flex;gap:.75rem;padding:.75rem 1rem;cursor:pointer;border-bottom:1px solid var(--border-color);transition:background-color .15s ease;line-height:1.4}.clue-item:last-child{border-bottom:none}.clue-item:hover{background-color:var(--player-cell-highlighted)}.clue-item--active{background-color:var(--player-cell-selected);border-left:3px solid var(--player-accent);padding-left:calc(1rem - 3px);font-weight:500}.clue-item--secondary-active{background-color:var(--player-cell-highlighted);border-left:3px solid var(--color-sage-light);padding-left:calc(1rem - 3px)}.clue-item__number{font-weight:700;min-width:2.5rem;color:var(--text-secondary);flex-shrink:0}.clue-item__text{flex:1 1;word-break:break-word;color:var(--text-primary)}@media (max-width:768px){.clues-list{max-height:60vh}.clues-section__title{padding:.75rem;font-size:1rem}.clue-item{padding:.6rem .75rem}.clue-item__number{min-width:2rem}}.clue-bottom-sheet__overlay{position:fixed;inset:0;background:var(--player-overlay-bg);z-index:40}.clue-bottom-sheet__content{background:var(--surface-primary,var(--player-bg));border-radius:var(--player-radius-lg) var(--player-radius-lg) 0 0;position:fixed;bottom:0;left:0;right:0;z-index:50;max-height:85vh;display:flex;flex-direction:column;outline:none;height:var(--snap-point-height,auto)}.clue-bottom-sheet__handle{background:var(--border-color)!important;width:40px!important;height:4px!important;border-radius:9999px!important;margin:.75rem auto 0!important;flex-shrink:0}.clue-bottom-sheet__header{padding:.75rem 1rem;border-bottom:1px solid var(--border-color);flex-shrink:0}.clue-bottom-sheet__title{font-size:1.1rem;font-weight:700;color:var(--text-primary)}.clue-bottom-sheet__body{flex:1 1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:env(safe-area-inset-bottom,0)}.completion-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.completion-card{background:var(--surface-primary);border-radius:var(--player-radius-lg);padding:2rem;text-align:center;max-width:380px;width:90%;box-shadow:var(--shadow-dialog);animation:slideUp .3s ease-out}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.completion-card__title{font-size:1.75rem;font-weight:700;color:var(--text-primary);margin-bottom:.5rem}.completion-card__subtitle{font-size:1rem;color:var(--text-secondary);margin-bottom:1.5rem;line-height:1.5}.completion-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(60px,1fr));grid-gap:1rem;gap:1rem;padding:1rem;background:var(--player-cell-highlighted);border-radius:var(--player-radius);margin-bottom:1rem}.completion-stats__item{display:flex;flex-direction:column;align-items:center;gap:.25rem}.completion-stats__label{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-weight:500}.completion-stats__value{font-size:1.4rem;font-weight:700;color:var(--text-primary)}.completion-card__message{font-size:.95rem;font-style:italic;color:var(--text-primary);line-height:1.5;margin-bottom:1rem;max-width:320px;margin-left:auto;margin-right:auto}.completion-card__attribution{font-size:.85rem;color:var(--text-secondary);font-style:italic;margin-bottom:1.5rem}.completion-card__actions{display:flex;gap:.75rem;justify-content:center}.completion-card__btn{padding:.7rem 1.5rem;border-radius:var(--player-radius);font-size:.95rem;font-weight:600;min-height:44px;cursor:pointer;transition:all .15s ease;font-family:inherit;border:1px solid var(--border-color);flex:1 1;max-width:160px}.completion-card__btn:active{transform:scale(.97)}.completion-card__btn--secondary{background:var(--surface-primary);color:var(--text-secondary);border-color:var(--border-medium)}.completion-card__btn--secondary:hover{background:var(--surface-hover)}.completion-card__btn--primary{background:var(--player-accent);color:#fff;border-color:transparent}.completion-card__btn--primary:hover{background:var(--player-accent-hover);color:#fff}.completion-card__share{margin-top:.25rem;margin-bottom:1.25rem;text-align:center}.completion-card__share-prompt{font-size:.85rem;color:var(--text-secondary);margin-bottom:.75rem;line-height:1.4}.completion-card__btn--share{background:var(--player-accent);color:#fff;border-color:transparent;width:100%;max-width:220px}.completion-card__btn--share:hover{background:var(--player-accent-hover);color:#fff}.completion-modal__reactions{display:flex;gap:.75rem;justify-content:center;margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--border-color)}.completion-modal__reaction-btn{background:var(--surface-primary);border:1px solid var(--border-medium);border-radius:var(--player-radius);padding:.5rem .9rem;font-size:1.25rem;line-height:1;min-height:40px;min-width:52px;cursor:pointer;transition:all .15s ease;font-family:inherit}.completion-modal__reaction-btn:hover:not(:disabled){background:var(--surface-hover);transform:translateY(-1px)}.completion-modal__reaction-btn:active:not(:disabled){transform:scale(.95)}.completion-modal__reaction-btn--active{background:var(--player-cell-highlighted);border-color:var(--player-accent)}.completion-modal__reaction-btn:disabled{cursor:default;opacity:.6}.completion-modal__reaction-btn--active:disabled{opacity:1}@media (max-width:767px){.completion-card{padding:1.5rem 1.25rem;width:95%}.completion-card__title{font-size:1.5rem}.completion-card__actions{flex-direction:column;gap:.5rem}.completion-card__btn{max-width:100%;width:100%}.completion-stats{gap:.5rem;padding:.75rem}.completion-stats__value{font-size:1.2rem}}.puzzle-toolbar{display:flex;gap:.5rem;padding:.75rem;background:var(--player-toolbar-bg);border-top:1px solid var(--border-color)}.puzzle-toolbar__btn{flex:1 1;border-radius:var(--player-radius);padding:.6rem .75rem;font-size:.8rem;font-weight:600;min-height:44px;border:1px solid var(--border-color);background:var(--surface-primary);color:var(--text-primary);transition:all .15s ease;cursor:pointer;font-family:inherit;line-height:1.2}.puzzle-toolbar__btn:active:not(:disabled){transform:scale(.97)}.puzzle-toolbar__btn:disabled{opacity:.4;cursor:not-allowed}.puzzle-toolbar__btn--check{background:var(--surface-primary);color:var(--text-primary);border-color:var(--border-medium)}.puzzle-toolbar__btn--check:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border-hover)}.puzzle-toolbar__btn--reveal{background:var(--surface-primary);color:var(--color-sage-dark);border-color:var(--color-sage)}.puzzle-toolbar__btn--reveal:hover:not(:disabled){background:var(--color-sage-light);color:var(--color-espresso);border-color:var(--color-sage-dark)}@media (max-width:380px){.puzzle-toolbar{display:grid;grid-template-columns:1fr 1fr}}.confirm-dialog-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:500;padding:1rem}.confirm-dialog{background:var(--surface-primary);border-radius:var(--player-radius-lg);padding:1.5rem;max-width:320px;width:100%;box-shadow:var(--shadow-dialog)}.confirm-dialog__title{font-size:1.1rem;font-weight:700;color:var(--color-espresso);margin-bottom:.5rem}.confirm-dialog__message{font-size:.95rem;color:var(--text-secondary);margin-bottom:1.25rem;line-height:1.5}.confirm-dialog__actions{display:flex;gap:.75rem;justify-content:flex-end}.confirm-dialog__btn{padding:.6rem 1.25rem;border-radius:var(--player-radius);font-size:.9rem;font-weight:600;min-height:40px;cursor:pointer;transition:all .15s ease;font-family:inherit;border:1px solid var(--border-color)}.confirm-dialog__btn--cancel{background:var(--surface-primary);color:var(--text-secondary);border-color:var(--border-medium)}.confirm-dialog__btn--cancel:hover{background:var(--surface-hover)}.confirm-dialog__btn--confirm{background:var(--player-accent);color:var(--color-espresso);border-color:var(--color-warm-tan-dark)}.confirm-dialog__btn--confirm:hover{background:var(--player-accent-hover);color:var(--color-cream)}.player-page *{transition:background-color .2s ease,color .2s ease,border-color .2s ease}.player-page{display:flex;flex-direction:column;height:100vh;height:100svh;background:var(--player-bg);overflow:hidden}.player-page--loading{align-items:center;justify-content:center}.player-header{padding:.75rem 1rem;background:var(--player-header-bg);border-bottom:none;flex-shrink:0;color:var(--player-header-text)}.player-header a,.player-header button{color:var(--player-header-text);border-color:rgba(255,255,255,.3)}.player-header__row{display:flex;justify-content:space-between;align-items:center}.player-header__back{display:flex;align-items:center;justify-content:center;width:36px;height:36px;flex-shrink:0;font-size:1.2rem;color:var(--player-header-text);text-decoration:none;border-radius:var(--player-radius-sm);margin-right:.5rem}.player-header__back:hover{background:rgba(255,255,255,.1)}.player-header__center{flex:1 1;min-width:0;text-align:center}.player-header__title{font-size:1.1rem;font-weight:700;color:var(--player-header-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0}.player-header__creator{font-size:.8rem;color:rgba(255,255,255,.7);font-style:italic}.player-header__right{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.player-header__timer{font-size:.85rem;font-weight:600;font-family:var(--font-mono);color:var(--player-header-text)}.player-body{flex:1 1;overflow:hidden;padding:0}.player-body,.player-grid-area{display:flex;flex-direction:column;gap:0}.player-grid-area{align-items:stretch;flex:1 1;overflow-y:auto;min-height:0;width:100%}.player-clues-desktop{display:none}.player-toolbar{position:-webkit-sticky;position:sticky;bottom:0;z-index:10;flex-shrink:0;padding-bottom:env(safe-area-inset-bottom,0)}@media (min-width:768px){.player-body{flex-direction:row;gap:1.5rem;padding:1rem 1.5rem;align-items:flex-start;justify-content:center;overflow-y:auto}.player-grid-area{flex:1 1;max-width:600px;overflow-y:visible}.player-clues-desktop{display:block;flex:1 1;max-width:360px;min-width:240px;overflow-y:auto;max-height:calc(100svh - 120px);max-height:calc(100vh - 120px);border:1px solid var(--border-color);border-radius:var(--player-radius);background:var(--surface-primary)}.player-toolbar{position:static}}.player-skeleton{display:flex;flex-direction:column;gap:1rem;padding:2rem;align-items:center;width:100%;max-width:400px}.player-skeleton__bar{border-radius:var(--player-radius);background:linear-gradient(90deg,var(--surface-hover) 0,var(--surface-active) 50%,var(--surface-hover) 100%);background-size:200% 100%;animation:skeleton-pulse 1.5s ease-in-out infinite;height:20px;width:100%}.player-skeleton__bar--title{height:28px;width:70%}.player-skeleton__bar--subtitle{height:16px;width:45%}.player-skeleton__grid{width:280px;height:280px;border-radius:var(--player-radius);background:linear-gradient(90deg,var(--surface-hover) 0,var(--surface-active) 50%,var(--surface-hover) 100%);background-size:200% 100%;animation:skeleton-pulse 1.5s ease-in-out infinite}@keyframes skeleton-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.player-error-card{background:var(--surface-primary);border:1px solid var(--border-color);border-radius:var(--player-radius-lg);padding:2rem;text-align:center;max-width:360px;margin:0 1rem}.player-error-card__icon{font-size:2rem;font-weight:700;color:var(--player-accent);margin:0 0 .75rem;width:48px;height:48px;line-height:48px;border-radius:50%;background:var(--color-puzzle-green-light);display:inline-block}.player-error-card__heading{font-size:1.1rem;font-weight:700;color:var(--text-primary);margin:0 0 .5rem}.player-error-card__message{font-size:.9rem;color:var(--text-secondary);margin:0}