*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{font-family:Inter,sans-serif;background:#1a1612;color:#f0ebe0;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;overscroll-behavior:none;padding-bottom:env(safe-area-inset-bottom,0)}header{width:100%;text-align:center;padding:16px 0;border-bottom:1px solid #2D261F}header h1{font-size:1.8rem;font-weight:800;letter-spacing:.02em;text-transform:lowercase}#puzzle-date{font-size:.75rem;font-weight:600;opacity:.4;letter-spacing:.05em;margin-top:2px}#game-container{width:100%;max-width:500px;padding:16px;display:flex;flex-direction:column;align-items:center;gap:12px}#board{display:grid;grid-template-columns:repeat(9,1fr);gap:2px;width:100%;aspect-ratio:1 / 1;background:#2d261f;border:2px solid #2D261F;border-radius:4px}.cell{position:relative;display:flex;align-items:center;justify-content:center;background:#1a1612;font-size:clamp(10px,2.5vw,16px);font-weight:700;border-radius:2px;aspect-ratio:1 / 1;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;transition:background .15s}.bonus-label{font-size:clamp(6px,1.5vw,9px);font-weight:600;opacity:.8;letter-spacing:.03em;pointer-events:none}.bonus-tw{background:#1c247b;color:#fff}.bonus-dw{background:#66544e;color:#fff}.bonus-tl{background:#307af0c1;color:#fff}.bonus-dl{background:#6eb4d5;color:#0e2a3d}.bonus-star{background:#bf9b5d;color:#1a1a1a;font-size:clamp(12px,3vw,20px)}.has-tile{background:#e8dfd0;color:#1a1a1a}.has-tile .tile-letter{font-size:clamp(12px,3vw,20px);font-weight:800;line-height:1}.has-tile .tile-value{position:absolute;bottom:1px;right:2px;font-size:clamp(5px,1.2vw,8px);font-weight:600;opacity:.6;line-height:1}.fixed-tile{background:#d4cabc}.player-tile{background:#f5ede0;box-shadow:0 0 0 2px #bf9b5d}#rack-row{display:flex;align-items:center;gap:10px;justify-content:center}#rack{display:flex;gap:6px;justify-content:center}#refresh-btn{width:36px;height:36px;border-radius:50%;border:none;background:#2d261f;color:#f0ebe0;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s,opacity .15s;flex-shrink:0}#refresh-btn:hover{opacity:.8}#refresh-btn:active{transform:rotate(-180deg)}.rack-tile{position:relative;width:clamp(40px,12vw,56px);height:clamp(48px,14vw,64px);background:#e8dfd0;color:#1a1a1a;border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;transition:transform .15s,box-shadow .15s,opacity .15s}.rack-tile .tile-letter{font-size:clamp(16px,4vw,24px);font-weight:800;line-height:1}.rack-tile .tile-value{position:absolute;bottom:3px;right:4px;font-size:clamp(8px,2vw,11px);font-weight:600;opacity:.5;line-height:1}.rack-tile:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000004d}.rack-tile:active{transform:translateY(0);box-shadow:0 1px 4px #0000004d}.rack-tile.selected{transform:translateY(-4px);box-shadow:0 0 0 3px #bf9b5d,0 6px 16px #0006}.rack-tile.placed{opacity:.25;pointer-events:none;transform:none}#live-score{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:20px;justify-content:center}.live-score-value{font-size:1.1rem;font-weight:700;color:#bf9b5d}#button-row{display:flex;gap:10px;width:100%;justify-content:center}#button-row button{font-family:Inter,sans-serif;font-size:.95rem;font-weight:700;border:none;border-radius:4px;padding:12px 32px;cursor:pointer;touch-action:manipulation;transition:opacity .15s,transform .1s}#button-row button:active{transform:scale(.97)}#submit-btn{background:#bf9b5d;color:#1a1a1a}#error-msg{display:none;font-size:.85rem;color:#e74c3c;text-align:center;padding:4px 0}#results{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%;animation:fadeIn .4s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.results-headline{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;justify-content:center}.results-label{font-size:.8rem;font-weight:600;text-transform:lowercase;letter-spacing:.05em;opacity:.5}.results-tier{font-size:1.4rem;font-weight:800}.results-divider{opacity:.3;font-weight:300}.results-score{font-size:1.4rem;font-weight:800;color:#bf9b5d}.score-label{font-weight:600;opacity:.6}.results-headline.jabberwock{flex-direction:column;align-items:center;gap:6px;text-align:center}.results-headline.jabberwock .results-tier{font-size:1.6rem;color:#7b68ee}.jabberwock-quip{font-size:.95rem;font-style:italic;color:#bf9b5d;max-width:280px}.jabberwock-beat{font-size:1rem;font-weight:700;color:#bf9b5d}.results-buttons{display:flex;gap:10px}.results-buttons button{font-family:Inter,sans-serif;font-size:.95rem;font-weight:700;border:none;border-radius:4px;padding:12px 32px;cursor:pointer;touch-action:manipulation;transition:opacity .15s,transform .1s}.results-buttons button:active{transform:scale(.97)}#hint-btn{background:#2d261f;color:#f0ebe0}#hint-btn.hint-btn-active{opacity:.4;cursor:default}#share-btn{background:#bf9b5d;color:#1a1a1a}#hint-rack-wrapper{display:flex;align-items:center;gap:10px;background:#241f1a;border-radius:8px;padding:8px 12px;animation:fadeIn .3s ease}.hint-rack-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;opacity:.5;font-weight:600}.hint-close{background:none;border:none;color:#f0ebe0;font-size:1.2rem;opacity:.5;cursor:pointer;padding:0 4px;line-height:1;flex-shrink:0}.hint-close:hover{opacity:1}.hint-refresh{width:36px;height:36px;border-radius:50%;border:none;background:#2d261f;color:#f0ebe0;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s,opacity .15s;flex-shrink:0}.hint-refresh:hover{opacity:.8}.hint-refresh:active{transform:rotate(-180deg)}#hint-check-btn{background:#bf9b5d;color:#1a1a1a}#hint-check-btn:disabled{opacity:.3;cursor:default}.hint-closure-msg{font-size:1.1rem;font-weight:700;color:#bf9b5d;text-align:center}.hint-used{background:#e8dfd0;color:#1a1a1a;box-shadow:0 0 0 2px #bf9b5d;cursor:pointer}.hint-used.placed{opacity:.25;pointer-events:none;transform:none}.hint-used.selected{transform:translateY(-4px);box-shadow:0 0 0 3px #bf9b5d,0 6px 16px #0006}.hint-unused{background:#2d261f!important;color:#f0ebe0!important;opacity:.35!important;pointer-events:none}.hint-highlight{box-shadow:0 0 0 2px #bf9b5d,0 0 8px #bf9b5d66;z-index:1}#reveal-area{flex-direction:column;align-items:center;gap:6px;padding:16px;background:#241f1a;border-radius:8px;width:100%;animation:fadeIn .3s ease}.reveal-label{font-size:.8rem;font-weight:700;letter-spacing:.05em;opacity:.8}.reveal-breakdown{font-size:.8rem;font-weight:600;opacity:.5;text-transform:uppercase}#reveal-btn{background:#2d261f;color:#f0ebe0}.score-float{position:absolute;top:-2px;left:50%;transform:translate(-50%);font-size:clamp(10px,2.5vw,14px);font-weight:800;color:#bf9b5d;pointer-events:none;z-index:10;animation:floatUp .9s ease-out forwards;text-shadow:0 1px 4px rgba(0,0,0,.6)}.score-float-invalid{color:#e74c3c}@keyframes floatUp{0%{opacity:1;transform:translate(-50%) translateY(0)}70%{opacity:1}to{opacity:0;transform:translate(-50%) translateY(-24px)}}@media(max-width:480px){header{padding:10px 0}header h1{font-size:1.4rem}#game-container{padding:10px 6px;gap:10px}#board{gap:1.5px;border-width:1.5px}.cell{font-size:clamp(10px,2.8vw,16px)}.has-tile .tile-letter{font-size:clamp(14px,3.5vw,20px)}#rack{gap:5px}.rack-tile{width:clamp(42px,14vw,56px);height:clamp(50px,16vw,64px);border-radius:5px}#button-row button,.results-buttons button{padding:14px 28px;font-size:1rem;min-height:48px}.results-headline{flex-direction:column;align-items:center;gap:4px}.results-divider{display:none}.results-buttons{flex-wrap:wrap;justify-content:center}#hint-rack-wrapper{padding:6px 8px;gap:6px;flex-wrap:wrap;justify-content:center}#reveal-area{padding:12px}}@media(max-width:360px){#game-container{padding:8px 4px;gap:8px}#board{gap:1px;border-width:1px}.bonus-label{font-size:clamp(5px,1.3vw,8px)}.rack-tile{width:clamp(38px,15vw,50px);height:clamp(46px,17vw,58px)}.results-buttons button{padding:12px 20px;font-size:.9rem}}@media(hover:none){.rack-tile:hover{transform:none;box-shadow:none}.rack-tile.selected{transform:translateY(-4px);box-shadow:0 0 0 3px #bf9b5d,0 6px 16px #0006}#refresh-btn:hover{opacity:1}}
