@font-face{font-family:Pirata One;src:url(/fonts/PirataOne-Regular.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}:root{--color-bg:#0a0a0a;--color-bg-raised:#141414;--color-panel:#101010;--color-card-face:#1c1c1c;--color-card-back:#050505;--color-border:#3a3a3a;--color-border-strong:#8a8a8a;--color-text:#e8e8e8;--color-text-dim:#9a9a9a;--color-text-faint:#6a6a6a;--color-white:#f5f5f5;--color-black:#000;--font-display:"Pirata One", "Times New Roman", serif;--font-body:-apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--radius-card:10px;--radius-md:6px;--logo-width:89px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--anim-card-fly-duration:2s;--anim-draw-duration:2s;--anim-flip-duration:1.2s;--anim-health-countdown-duration:.8s}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{background:var(--color-bg) url(/assets/game-background.png) center / cover no-repeat fixed;color:var(--color-text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;overflow-x:hidden}#root{min-height:100vh}h1,h2,h3{font-family:var(--font-display);letter-spacing:.02em;margin:0;font-weight:400}button{font-family:var(--font-body);cursor:pointer}button:disabled{cursor:not-allowed}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.action-bar{align-items:stretch;gap:var(--space-2);padding-top:var(--space-3);flex-direction:column;min-width:280px;display:flex}.action-bar__hint{text-align:center;color:var(--color-text-dim);margin:0}.action-bar__primary{font-family:var(--font-display);padding:var(--space-3);background:var(--color-white);color:var(--color-black);border:1px solid var(--color-white);border-radius:var(--radius-md);font-size:1.4rem;transition:transform .12s,opacity .12s}.action-bar__primary:not(:disabled):hover{transform:translateY(-1px)}.action-bar__primary:disabled{color:var(--color-text-faint);border-color:var(--color-border);background:0 0}.action-bar__secondary{font-family:var(--font-body);padding:var(--space-2);color:var(--color-text-dim);border:1px solid var(--color-border);border-radius:var(--radius-md);background:0 0}.action-bar__secondary:hover{color:var(--color-white);border-color:var(--color-border-strong)}.card{border-radius:var(--radius-card);border:1px solid var(--color-border);background:var(--color-card-face);-webkit-user-select:none;user-select:none;transition:transform .16s,box-shadow .16s,border-color .16s,filter .16s;position:relative;box-shadow:0 2px 6px #00000080}.card--sm{width:44px;height:62px}.card--md{width:74px;height:104px}.card--lg{width:108px;height:152px}.card--back{background:var(--color-card-back) url(/assets/deck-cover.png) center / cover no-repeat;border-color:var(--color-border)}.card--interactive{cursor:pointer}.card--interactive:hover{border-color:var(--color-border-strong);filter:brightness(1.1)}.card--interactive:focus-visible{outline:2px solid var(--color-white);outline-offset:2px}.card--selected,.card--raised{border-color:var(--color-white);transform:translateY(-14px);box-shadow:0 8px 16px #0009}.card--dimmed{opacity:.45}.card__corner{font-family:var(--font-display);color:var(--color-white);font-size:.95rem;line-height:1;position:absolute;top:4px;left:6px}.card__corner--bottom{inset:auto 6px 4px auto;transform:rotate(180deg)}.card__corner--red{color:var(--color-text-dim)}.card__suit{color:var(--color-white);justify-content:center;align-items:center;font-size:1.6rem;display:flex;position:absolute;inset:0}.card--lg .card__suit{font-size:2.4rem}.card__suit--red{color:var(--color-text-dim)}.battle-area{justify-content:center;align-items:center;gap:var(--space-5);min-height:78px;padding:var(--space-2) 0;flex-wrap:wrap;display:flex}.battle-area__group{display:flex}.battle-area__group .card{margin-left:-14px}.battle-area__group .card:first-child{margin-left:0}.enemy-card{border-radius:var(--radius-card);border:1px solid var(--color-border-strong);background:var(--color-card-face);background-position:50%;background-size:cover;width:108px;height:152px;position:relative;box-shadow:0 8px 20px #0009}.enemy-card:before{content:"";border-radius:inherit;background:linear-gradient(#0000008c 0%,#0000 30% 65%,#0009 100%);position:absolute;inset:0}.enemy-card--J{background-image:url(/assets/goblin.png)}.enemy-card--Q{background-image:url(/assets/guardian-goblin.png)}.enemy-card--K{background-image:url(/assets/king-goblin.png)}.enemy-card__health{font-family:var(--font-display);color:var(--color-white);text-shadow:0 1px 3px #000000e6;font-size:1.6rem;position:absolute;top:8px;left:10px}.enemy-card__attack{font-family:var(--font-display);color:var(--color-white);text-shadow:0 1px 3px #000000e6;font-size:1.6rem;position:absolute;bottom:8px;right:10px}.enemy-card__suit{color:var(--color-text-dim);text-shadow:0 1px 3px #000000e6;font-size:1.2rem;position:absolute;top:8px;right:8px}.flip-card{width:108px;height:152px}.flip-card__inner{width:100%;height:100%}.flip-card__inner--animating{animation:enemy-card-flip var(--anim-flip-duration,1.2s) ease-in-out}@keyframes enemy-card-flip{0%{transform:scale(1)}25%{transform:scale(1.15)}50%{transform:scaleX(.01)scaleY(1.15)}75%{transform:scaleX(1.15)scaleY(1.15)}to{transform:scale(1)}}.flip-card__back{border-radius:var(--radius-card);border:1px solid var(--color-border);background:var(--color-card-back) url(/assets/deck-cover.png) center / cover no-repeat;width:100%;height:100%}.castle-area{padding:var(--space-4) 0;justify-content:center;display:flex}.castle-area__stack{width:108px;height:152px;position:relative}.castle-area__back{position:absolute;inset:0}.castle-area__back:first-child{transform:translate(10px,-10px)rotate(3deg)}.castle-area__back:nth-child(2){transform:translate(-8px,-6px)rotate(-2deg)}.castle-area__back:nth-child(3){transform:translate(4px,-14px)rotate(1deg)}.castle-area__enemy-wrap{position:absolute;inset:0}.pile{align-items:center;gap:var(--space-2);flex-direction:column;display:flex}.pile__label{font-family:var(--font-display);color:var(--color-text-dim);align-items:baseline;gap:var(--space-2);font-size:1.1rem;display:flex}.pile__count{color:var(--color-white);font-size:1.3rem}.pile__stack{position:relative}.game-log{background:var(--color-panel);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);flex-direction:column;height:100%;min-height:0;display:flex}.game-log__title{color:var(--color-text-dim);margin-bottom:var(--space-3);font-size:1.2rem}.game-log__entries{gap:var(--space-1);flex-direction:column;display:flex;overflow-y:auto}.game-log__entry{color:var(--color-text-dim);margin:0;font-size:.9rem;animation:.2s log-in}.game-log__entry--cards_played,.game-log__entry--enemy_attacked,.game-log__entry--enemy_defeated,.game-log__entry--game_won,.game-log__entry--player_died{color:var(--color-text)}@keyframes log-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.ghost{z-index:50;pointer-events:none;transition:transform var(--anim-card-fly-duration,2s) ease, opacity var(--anim-card-fly-duration,2s) ease;will-change:transform, opacity;position:fixed;top:0;left:0}.ghost--battle{width:max-content}.ghost--battle .battle-area{flex-wrap:nowrap;min-height:0;padding:0}.hand{padding-top:var(--space-6);justify-content:center;align-items:flex-end;min-height:104px;display:flex}.hand__slot{animation:card-draw-in var(--anim-draw-duration,2s) ease;margin-left:-22px}.hand__slot:first-child{margin-left:0}@keyframes card-draw-in{0%{opacity:0;transform:translateY(60px)scale(.8)}to{opacity:1;transform:translateY(0)scale(1)}}.hand__empty{color:var(--color-text-faint);font-style:italic}.hand-sort-toggle{border:1px solid var(--color-border);color:var(--color-text-dim);border-radius:var(--radius-md);padding:var(--space-1) var(--space-3);margin-bottom:var(--space-2);background:0 0;font-size:.8rem}.hand-sort-toggle:hover{border-color:var(--color-border-strong);color:var(--color-white)}.header{padding:var(--space-4) var(--space-5);justify-content:space-between;align-items:center;display:flex}.header__logo{background:0 0;border:none;align-items:center;padding:0;display:flex}.header__logo-img{width:var(--logo-width);height:auto;display:block}.header__seed{align-items:center;gap:var(--space-3);display:flex}.header__seed-text{font-family:var(--font-body);color:var(--color-text-faint);letter-spacing:.03em;font-size:.85rem}.header__copy{border:1px solid var(--color-border-strong);color:var(--color-text);border-radius:var(--radius-md);padding:var(--space-1) var(--space-3);background:0 0;font-size:.8rem}.header__copy:hover{border-color:var(--color-white);color:var(--color-white)}@media (width<=599px){.header__seed-text{text-overflow:ellipsis;white-space:nowrap;max-width:90px;overflow:hidden}}.protections{align-items:center;gap:var(--space-2);padding-bottom:var(--space-4);flex-direction:column;display:flex}.protections__dots{gap:var(--space-2);display:flex}.protections__dot{border:1px solid var(--color-border-strong);background:0 0;border-radius:50%;width:14px;height:14px}.protections__dot--filled{background:var(--color-white)}.protections__button{border:1px solid var(--color-border);color:var(--color-text-dim);border-radius:var(--radius-md);padding:var(--space-1) var(--space-3);background:0 0;font-size:.8rem}.protections__button:not(:disabled):hover{border-color:var(--color-border-strong);color:var(--color-white);cursor:pointer}.protections__button:disabled{opacity:.4}.turn-banner{padding:var(--space-3) 0;justify-content:center;min-height:52px;display:flex}.turn-banner__text{font-family:var(--font-display);color:var(--color-white);border:1px solid var(--color-border);padding:var(--space-2) var(--space-5);border-radius:var(--radius-md);background:var(--color-bg-raised);opacity:0;font-size:1.3rem;transition:opacity .6s}.turn-banner__text--visible{opacity:1}.turn-banner__text--error{border-color:var(--color-white);font-family:var(--font-body);border-style:dashed;font-size:1rem}.overlay{z-index:10;background:#000c;justify-content:center;align-items:center;animation:.3s overlay-in;display:flex;position:fixed;inset:0}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.overlay__panel{background:var(--color-panel);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);padding:var(--space-6);text-align:center;max-width:420px}.overlay__title{margin-bottom:var(--space-3);font-size:2.4rem}.overlay__subtitle{color:var(--color-text-dim);margin-bottom:var(--space-5)}.overlay__button{font-family:var(--font-display);padding:var(--space-3) var(--space-5);background:var(--color-white);color:var(--color-black);border-radius:var(--radius-md);border:none;font-size:1.2rem}.board{flex-direction:column;height:100vh;display:flex;overflow:hidden}.board__grid{gap:var(--space-5);padding:0 var(--space-5) var(--space-5);flex:1;grid-template-rows:1fr;grid-template-columns:220px 1fr 340px;align-items:stretch;min-height:0;display:grid}.board__piles{align-items:center;gap:var(--space-6);padding-top:var(--space-5);flex-direction:column;display:flex}.board__center{flex-direction:column;align-items:center;min-height:0;display:flex}.board__hand-dock{flex-direction:column;align-items:center;margin-top:auto;margin-bottom:64px;display:flex}.board__side{padding-top:var(--space-5);flex-direction:column;min-height:0;display:flex}.board__side .game-log{flex:1;min-height:0}.start-screen{text-align:center;min-height:100vh;padding:var(--space-5);flex-direction:column;justify-content:center;align-items:center;display:flex}.start-screen__logo{width:min(calc(var(--logo-width) * 3), 90vw);height:auto;margin-bottom:var(--space-3);display:block}.start-screen__subtitle{color:var(--color-text-dim);margin-bottom:var(--space-6)}.start-screen__actions{align-items:center;gap:var(--space-4);flex-direction:column;width:100%;max-width:360px;display:flex}.start-screen__primary{width:100%;font-family:var(--font-display);padding:var(--space-3);background:var(--color-white);color:var(--color-black);border-radius:var(--radius-md);border:none;font-size:1.4rem}.start-screen__primary:hover{transform:translateY(-1px)}.start-screen__seed-form{width:100%;margin-top:var(--space-4);gap:var(--space-2);flex-direction:column;display:flex}.start-screen__label{color:var(--color-text-faint);font-size:.85rem}.start-screen__seed-row{gap:var(--space-2);display:flex}.start-screen__seed-input{background:var(--color-bg-raised);border:1px solid var(--color-border);color:var(--color-text);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-family:var(--font-body);flex:1}.start-screen__seed-input:focus{border-color:var(--color-border-strong);outline:none}.start-screen__secondary{border:1px solid var(--color-border-strong);color:var(--color-text);border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);background:0 0}.start-screen__secondary:disabled{opacity:.4}
