:root{--ink: #1a1714;--paper: #efe7d6;--paper-deep: #e4d9c2;--tile: #fbf7ee;--line: #c9bda3;--accent: #c2410c;--good: #3f7d4e;--bad: #b23b3b;--muted: #6b5e48;--shadow: rgba(40, 30, 15, .18);--font-serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--font-sans: "Futura", "Helvetica Neue", system-ui, sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-serif);min-height:100dvh;background-image:repeating-linear-gradient(0deg,transparent 0 27px,rgba(120,100,70,.05) 27px 28px)}#root{min-height:100dvh;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px 24px;gap:4px}.board{margin:24px 0 6px}.bottom{width:100%;max-width:560px;display:flex;flex-direction:column;align-items:center;padding-top:18px}.app-header{width:100%;max-width:560px;display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:6px;text-align:center}.header-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:12px}.header-btn{font-family:var(--font-sans);font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;background:transparent;color:var(--ink);border:1.5px solid var(--ink);padding:7px 12px;border-radius:30px;cursor:pointer;transition:background .15s,opacity .15s;white-space:nowrap}.header-btn:hover:not(:disabled){background:var(--ink);color:var(--paper)}.header-btn:disabled{opacity:.35;cursor:not-allowed}.brand{font-family:var(--font-sans);font-weight:800;letter-spacing:.42em;font-size:13px;text-transform:uppercase;color:var(--accent);margin:0 0 2px;padding-left:.42em}.brand-logo{display:block;height:clamp(28px,6vw,40px);width:auto;margin:0 auto 4px;padding:6px 0}.headline{font-size:clamp(24px,6.5vw,38px);margin:0;line-height:1.05;font-weight:600}.tag{font-size:14px;color:var(--muted);margin:6px 0 0;font-style:italic}.prompt{max-width:520px;text-align:center;font-size:15px;color:#5a4f3c;margin:18px 0 4px;line-height:1.5}.board{width:100%;max-width:600px;display:flex;flex-direction:row;flex-wrap:wrap;gap:20px 14px;justify-content:center;margin:24px 0 12px}.word{display:flex;gap:7px;justify-content:center;position:relative}.word.invalid:after{content:"not a word";position:absolute;right:-4px;top:-16px;font-size:10px;font-style:italic;color:var(--bad);font-family:var(--font-sans)}.tile{width:clamp(36px,10vw,52px);aspect-ratio:54 / 62;background:var(--tile);border:1px solid var(--line);border-radius:7px;box-shadow:0 2px 0 var(--shadow);display:flex;align-items:center;justify-content:center;font-size:clamp(18px,5vw,26px);font-weight:600;text-transform:uppercase;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative;padding:0;font-family:inherit;color:inherit;transition:transform .12s,border-color .2s,box-shadow .2s,background .2s,color .2s}.tile:hover:not(.locked){transform:translateY(-2px)}.tile.sel{border-color:var(--ink);box-shadow:0 0 0 2px var(--ink),0 2px 0 var(--shadow)}.tile.changed{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 2px #7c2606}.word.invalid .tile.changed{background:var(--bad);box-shadow:0 2px #7a2020}.tile.locked{background:var(--good);color:#fff;border-color:var(--good);box-shadow:0 2px #2c5836;cursor:default;animation:lock-pop .7s cubic-bezier(.34,1.56,.64,1) both;animation-delay:calc(var(--stagger, 0) * 70ms)}@keyframes lock-pop{0%{transform:translateY(0) scale(1) rotateX(0)}30%{transform:translateY(-16px) scale(1.12) rotateX(-18deg)}55%{transform:translateY(6px) scale(.94) rotateX(8deg)}80%{transform:translateY(-3px) scale(1.02) rotateX(-2deg)}to{transform:translateY(0) scale(1) rotateX(0)}}.tile.shake{animation:shake .4s}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.controls{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap;justify-content:center}.act{font-family:var(--font-sans);font-size:12px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;background:var(--ink);color:var(--paper);border:none;padding:11px 18px;border-radius:30px;cursor:pointer;box-shadow:0 2px 0 var(--shadow);transition:transform .1s,opacity .2s}.act:hover{transform:translateY(-1px)}.act.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--ink)}.timer{font-family:var(--font-sans);font-variant-numeric:tabular-nums;font-size:14px;font-weight:600;color:var(--muted);text-align:center;margin:6px 0 10px;letter-spacing:.04em}.status{min-height:22px;margin-top:14px;font-size:15px;font-style:italic;color:var(--muted);text-align:center;max-width:520px}.status.win{color:var(--good);font-weight:700;font-style:normal;font-size:17px;animation:win-rise .6s .4s cubic-bezier(.34,1.56,.64,1) both}@keyframes win-rise{0%{transform:translateY(8px) scale(.92);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.kb{width:100%;max-width:520px;margin-top:16px;display:flex;flex-direction:column;gap:7px}.kb-row{display:flex;gap:5px;justify-content:center}.key{flex:1;max-width:42px;height:50px;border:none;border-radius:6px;background:var(--paper-deep);color:var(--ink);font-family:var(--font-sans);font-weight:700;font-size:16px;cursor:pointer;box-shadow:0 2px 0 var(--shadow);transition:transform .08s,background .15s;text-transform:uppercase}.key:hover{background:#d8cbae}.key:active{transform:translateY(2px);box-shadow:none}.key.wide{flex:1.6;max-width:none;font-size:11px;letter-spacing:.08em}.meta{margin-top:24px;font-size:12px;color:#9a8c70;text-align:center;max-width:520px;line-height:1.5}.count{font-variant-numeric:tabular-nums}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:50}.confetti-piece{position:absolute;top:-20px;width:9px;height:14px;opacity:0;border-radius:1px;animation-name:confetti-fall;animation-timing-function:cubic-bezier(.25,.6,.35,1);animation-fill-mode:forwards;will-change:transform,opacity}.confetti-piece.shape-1{width:10px;height:10px;border-radius:50%}.confetti-piece.shape-2{width:6px;height:16px}@keyframes confetti-fall{0%{transform:translate3d(0,-10vh,0) rotate(0);opacity:0}8%{opacity:1}to{transform:translate3d(var(--drift, 0px),110vh,0) rotate(var(--rot, 720deg));opacity:0}}.leaderboard-container{width:100%;margin-top:24px;padding:18px;background:var(--paper-deep);border-radius:12px}.leaderboard-title{font-family:var(--font-sans);font-size:14px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);text-align:center;margin:0 0 20px}.leaderboard-list{display:flex;flex-direction:column;gap:12px}.leaderboard-entry{display:flex;align-items:center;font-size:15px;gap:12px;padding-bottom:8px;border-bottom:1px solid var(--line)}.leaderboard-entry:last-child{border-bottom:none}.leaderboard-rank{font-weight:800;color:var(--muted);width:20px}.leaderboard-name{flex:1;font-weight:600}.leaderboard-stats{font-variant-numeric:tabular-nums;color:var(--muted);font-size:13px}.auth-container{width:100%;text-align:center}.auth-prompt{font-size:14px;color:var(--muted);margin-bottom:16px}.auth-form-vertical{display:flex;flex-direction:column;gap:12px;align-items:center;max-width:320px;margin:0 auto}.auth-input.full{width:100%}.auth-toggle{background:none;border:none;color:var(--muted);font-size:12px;text-decoration:underline;cursor:pointer;margin-top:16px}.auth-toggle:hover{color:var(--ink)}.auth-input{font-family:var(--font-sans);font-size:14px;padding:10px 14px;border:1.5px solid var(--line);border-radius:8px;background:var(--tile);color:var(--ink)}.auth-input:focus{outline:none;border-color:var(--ink)}.auth-message{font-size:13px;margin-top:12px;color:var(--accent);font-style:italic}.auth-status{width:100%;display:flex;flex-direction:column;gap:12px;align-items:center;font-size:14px;color:var(--muted);text-align:center}.act.small{padding:8px 16px;font-size:11px}.act.full-width{width:100%}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#140f058c;display:flex;align-items:center;justify-content:center;z-index:100;padding:24px;animation:modal-fade .2s ease-out both}.modal{position:relative;background:var(--paper);border-radius:14px;padding:28px 24px 24px;width:100%;max-width:440px;max-height:calc(100dvh - 48px);overflow-y:auto;box-shadow:0 12px 40px #00000040;animation:modal-pop .3s cubic-bezier(.34,1.56,.64,1) both}.modal-close{position:absolute;top:10px;right:12px;background:transparent;border:none;font-size:28px;line-height:1;color:var(--muted);cursor:pointer;padding:4px 8px}.modal-close:hover{color:var(--ink)}.modal-title{font-family:var(--font-serif);font-size:26px;font-weight:600;text-align:center;margin:0 0 18px}@keyframes modal-fade{0%{opacity:0}to{opacity:1}}@keyframes modal-pop{0%{transform:translateY(12px) scale(.96);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.result-answer{text-align:center;font-size:15px;color:var(--muted);margin:0 0 18px}.result-answer strong{color:var(--ink);font-weight:700;letter-spacing:.06em}.result-stats{display:flex;justify-content:center;gap:32px;margin-bottom:20px}.stat{text-align:center}.stat-value{font-family:var(--font-sans);font-size:28px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}.stat-label{font-family:var(--font-sans);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-top:2px}.share-preview{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px;line-height:1.5;background:var(--paper-deep);padding:14px;border-radius:8px;text-align:center;margin:0 0 12px;white-space:pre;overflow-x:auto}.share-btn{display:block;margin:0 auto}.result-countdown{text-align:center;margin-top:18px;font-size:13px;color:var(--muted)}.result-countdown strong{font-family:var(--font-sans);font-variant-numeric:tabular-nums;font-size:18px;color:var(--ink);display:block;margin-top:4px}.result-anon-cta{text-align:center;font-size:13px;color:var(--accent);margin:18px 0 0;font-style:italic}@media (prefers-reduced-motion: reduce){.tile,.tile.shake,.tile.locked,.status.win,.confetti-piece,.leaderboard-container,.modal,.modal-backdrop{animation:none!important;transition:none!important}.confetti{display:none}}.admin{min-height:100dvh;width:100%;display:grid;grid-template-columns:240px 1fr}.admin-nav{background:var(--paper-deep);border-right:1px solid var(--line);padding:24px 16px;display:flex;flex-direction:column;gap:8px}.admin-brand{display:flex;align-items:baseline;justify-content:space-between;font-family:var(--font-serif);font-size:20px;padding:0 8px 16px;border-bottom:1px solid var(--line);margin-bottom:12px}.admin-role{font-family:var(--font-sans);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.admin-nav nav{display:flex;flex-direction:column;gap:2px}.admin-nav-link{display:block;padding:8px 12px;border-radius:6px;color:var(--ink);text-decoration:none;font-family:var(--font-sans);font-size:14px}.admin-nav-link:hover{background:#78644614}.admin-nav-link.is-active{background:var(--ink);color:var(--paper)}.admin-nav-back{margin-top:auto;padding:8px 12px;color:var(--muted);text-decoration:none;font-family:var(--font-sans);font-size:13px}.admin-nav-back:hover{color:var(--ink)}.admin-main{padding:32px 40px;overflow-y:auto}.admin-h1{font-family:var(--font-serif);font-size:28px;margin:0 0 12px}.admin-empty{color:var(--muted);font-family:var(--font-sans);font-size:14px}.admin-loading{padding:40px;font-family:var(--font-sans);color:var(--muted)}.header-btn.is-admin{color:var(--accent)}.admin-toolbar{display:flex;gap:8px;margin:16px 0}.admin-input{flex:1;padding:8px 12px;border:1px solid var(--line);border-radius:6px;background:var(--tile);font-family:var(--font-sans);font-size:14px}.admin-btn{padding:8px 14px;border:1px solid var(--line);border-radius:6px;background:var(--tile);font-family:var(--font-sans);font-size:13px;cursor:pointer}.admin-btn:hover:not(:disabled){background:var(--paper-deep)}.admin-btn:disabled{opacity:.5;cursor:default}.admin-error{color:var(--bad);font-family:var(--font-sans);font-size:13px;margin:8px 0}.admin-muted{color:var(--muted);font-style:italic}.admin-tag{display:inline-block;margin-left:8px;padding:1px 6px;border-radius:4px;background:var(--ink);color:var(--paper);font-family:var(--font-sans);font-size:10px;text-transform:uppercase;letter-spacing:.05em}.admin-table-wrap{border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--tile)}.admin-table{width:100%;border-collapse:collapse;font-family:var(--font-sans);font-size:14px}.admin-table th,.admin-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--line)}.admin-table th{background:var(--paper-deep);font-weight:600;text-transform:capitalize;font-size:12px;letter-spacing:.04em}.admin-table tbody tr:last-child td{border-bottom:none}.admin-toggle{width:32px;height:28px;border:1px solid var(--line);border-radius:6px;background:var(--paper);font-family:var(--font-sans);font-size:14px;cursor:pointer}.admin-toggle:hover:not(:disabled){background:var(--paper-deep)}.admin-toggle.is-on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.admin-toggle:disabled{opacity:.4;cursor:not-allowed}.admin-btn.is-primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.admin-btn.is-danger{color:var(--bad);border-color:var(--bad)}.admin-btn.is-danger:hover:not(:disabled){background:var(--bad);color:var(--paper)}.admin-row-actions{display:flex;gap:6px;justify-content:flex-end}.admin-form{display:flex;flex-direction:column;gap:12px;margin-top:4px}.admin-field{display:flex;flex-direction:column;gap:4px;font-family:var(--font-sans);font-size:13px}.admin-field>span{color:var(--muted)}.admin-form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.admin-month-label{flex:1;text-align:center;font-family:var(--font-serif);font-size:18px}.admin-calendar{border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--tile)}.admin-calendar-head,.admin-calendar-body{display:grid;grid-template-columns:repeat(7,1fr)}.admin-calendar-cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px 8px;font-family:var(--font-sans);font-size:12px;background:var(--tile)}.admin-calendar-cell:nth-child(7n){border-right:none}.admin-calendar-dayname{background:var(--paper-deep);text-align:center;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.admin-calendar-day{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:84px;text-align:left;cursor:pointer}.admin-calendar-day:hover{background:var(--paper-deep)}.admin-calendar-day.is-outside{opacity:.4}.admin-calendar-day.is-today .admin-calendar-date{background:var(--accent);color:var(--paper)}.admin-calendar-day.is-scheduled{background:#3f7d4e14}.admin-calendar-date{display:inline-block;padding:1px 6px;border-radius:4px;font-weight:600}.admin-calendar-clue{font-size:11px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}.admin-picker-list{max-height:280px;overflow-y:auto;border:1px solid var(--line);border-radius:6px}.admin-picker-row{display:flex;gap:10px;align-items:center;padding:8px 12px;border-bottom:1px solid var(--line);cursor:pointer}.admin-picker-row:last-child{border-bottom:none}.admin-picker-row:hover,.admin-picker-row.is-selected{background:var(--paper-deep)}.admin-picker-clue{font-family:var(--font-sans);font-size:14px;font-weight:600}.admin-picker-answer{font-family:var(--font-sans);font-size:12px;color:var(--muted)}.app-footer{font-family:var(--font-sans);font-size:13px;color:var(--muted);text-align:center;margin:18px 0 8px}.app-footer a{color:var(--accent);text-decoration:none;font-weight:600}.app-footer a:hover{text-decoration:underline}.cal{font-family:var(--font-sans)}.cal-head{display:grid;grid-template-columns:repeat(7,1fr);column-gap:4px;border-bottom:1px solid var(--line);padding-bottom:6px;margin-bottom:8px}.cal-dayname{text-align:center;font-size:11px;font-weight:500;color:var(--muted);letter-spacing:.04em}.cal-body{display:grid;grid-template-columns:repeat(7,1fr);row-gap:10px;column-gap:4px}.cal-slot{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0}.cal-slot.is-empty{visibility:hidden}.cal-key{width:100%;aspect-ratio:1 / 1;max-width:44px;border:1.5px solid var(--line);border-radius:8px;background:var(--tile);display:flex;align-items:center;justify-content:center;font-family:var(--font-sans);font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;padding:0;transition:background .12s ease,transform .05s ease,border-color .12s ease}@media (max-width: 540px){.cal-key{max-width:none;border-radius:10px}}.cal-key:hover:not(:disabled){background:var(--paper-deep)}.cal-key:active:not(:disabled){transform:translateY(1px)}.cal-slot.is-future .cal-key{background:linear-gradient(180deg,var(--tile) 0%,var(--paper) 100%);border-color:#0000000f;color:var(--muted);cursor:default;opacity:.55}.cal-slot.is-unplayable .cal-key:not(:disabled){cursor:default}.cal-slot.is-today .cal-key{border-color:var(--accent)}.cal-slot.is-solved .cal-key{border-color:var(--good);background:#3f7d4e1a}.cal-mark{color:var(--good);font-weight:700;font-size:15px;line-height:1}.cal-date{font-size:11px;color:var(--muted);font-weight:500;line-height:1}.cal-slot.is-today .cal-date{color:var(--accent);font-weight:700}.archive-banner{font-family:var(--font-sans);font-size:13px;color:var(--muted);background:var(--paper-deep);border:1px solid var(--line);border-radius:6px;padding:8px 12px;margin:12px 0 0}.archive-toolbar{display:flex;align-items:center;gap:8px;margin:8px 0 12px}.archive-cell.is-unplayable{cursor:default}.archive-cell.is-unplayable:hover{background:var(--tile)}.archive-cell.is-solved{background:#3f7d4e26}.archive-badge{font-size:11px;font-family:var(--font-sans);color:var(--muted)}.archive-cell.is-solved .archive-badge{color:var(--good);font-weight:600}.archive-legend{display:flex;gap:14px;flex-wrap:wrap;font-family:var(--font-sans);font-size:12px;color:var(--muted);margin:12px 2px 0}.admin-credit{display:flex;flex-direction:column;gap:8px;border:1px solid var(--line);border-radius:6px;padding:10px 12px;margin:0}.admin-credit legend{padding:0 6px;font-family:var(--font-sans);font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.result-credit{text-align:center;font-family:var(--font-sans);font-size:12px;color:var(--muted);font-style:italic;margin:4px 0 8px}.link-btn{background:none;border:none;color:var(--accent);cursor:pointer;font:inherit;padding:0;text-decoration:underline}@media (max-width: 720px){.admin{grid-template-columns:1fr}.admin-nav{border-right:none;border-bottom:1px solid var(--line)}.admin-main{padding:24px}}
