*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:var(--jg-color-background);color:var(--jg-color-text);font-family:var(--jg-font-family);font-size:var(--jg-size-md);line-height:var(--jg-line-height-normal)}h1,h2,h3{margin:0;line-height:var(--jg-line-height-tight)}h1{font-size:var(--jg-size-xl)}h2{font-size:var(--jg-size-lg)}h3{font-size:var(--jg-size-md)}p{margin:0}a{color:var(--jg-color-primary)}:focus-visible{outline:2px solid var(--jg-color-focus);outline-offset:2px}.jg-page{max-width:var(--jg-layout-content-width);margin:0 auto;padding:var(--jg-space-lg)}.jg-stack{display:flex;flex-direction:column;gap:var(--jg-space-md)}.jg-stack--sm{gap:var(--jg-space-sm)}.jg-stack--lg{gap:var(--jg-space-xl)}.jg-row{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--jg-space-md)}.jg-row--between{justify-content:space-between}.jg-muted{color:var(--jg-color-text-muted);font-size:var(--jg-size-sm)}.jg-button{min-height:var(--jg-layout-touch-target);padding:var(--jg-space-sm) var(--jg-space-lg);border:1px solid var(--jg-color-border);border-radius:var(--jg-radius-md);background:var(--jg-color-surface);color:var(--jg-color-text);font:inherit;font-weight:var(--jg-font-weight-bold);cursor:pointer}.jg-button:disabled{opacity:.5;cursor:not-allowed}.jg-button--primary{background:var(--jg-color-primary);border-color:var(--jg-color-primary);color:var(--jg-color-on-primary)}.jg-button--danger{background:var(--jg-color-danger);border-color:var(--jg-color-danger);color:var(--jg-color-on-danger)}.jg-button--quiet{background:transparent;border-color:transparent;color:var(--jg-color-primary)}.jg-button--block{width:100%}.jg-card{padding:var(--jg-space-lg);background:var(--jg-color-surface);border:1px solid var(--jg-color-border);border-radius:var(--jg-radius-lg)}.jg-dialog-backdrop{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--jg-space-lg);background:var(--jg-color-overlay)}.jg-dialog{width:100%;max-width:420px;padding:var(--jg-space-xl);background:var(--jg-color-surface);border-radius:var(--jg-radius-lg)}.jg-list{list-style:none;margin:0;padding:0;border:1px solid var(--jg-color-border);border-radius:var(--jg-radius-md);background:var(--jg-color-surface)}.jg-list-item{padding:var(--jg-space-md) var(--jg-space-lg)}.jg-list-item+.jg-list-item{border-top:1px solid var(--jg-color-border)}.jg-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--jg-space-md);padding:var(--jg-space-md) var(--jg-space-lg);border-radius:var(--jg-radius-md);border:1px solid transparent}.jg-banner--info{background:var(--jg-color-info-surface);color:var(--jg-color-info)}.jg-banner--success{background:var(--jg-color-success-surface);color:var(--jg-color-success)}.jg-banner--warning{background:var(--jg-color-warning-surface);color:var(--jg-color-warning)}.jg-banner--error{background:var(--jg-color-danger-surface);color:var(--jg-color-danger)}.jg-badge{display:inline-block;padding:var(--jg-space-xxs) var(--jg-space-sm);border-radius:var(--jg-radius-pill);background:var(--jg-color-surface-alt);color:var(--jg-color-text);font-size:var(--jg-size-xs);font-weight:var(--jg-font-weight-bold)}.jg-badge--info{background:var(--jg-color-info-surface);color:var(--jg-color-info)}.jg-badge--success{background:var(--jg-color-success-surface);color:var(--jg-color-success)}.jg-badge--warning{background:var(--jg-color-warning-surface);color:var(--jg-color-warning)}.jg-badge--danger{background:var(--jg-color-danger-surface);color:var(--jg-color-danger)}.jg-badge--cho{background:var(--jg-color-side-cho);color:var(--jg-color-on-primary)}.jg-badge--han{background:var(--jg-color-side-han);color:var(--jg-color-on-primary)}.jg-progress{display:block;width:100%;height:var(--jg-space-sm);border:0;border-radius:var(--jg-radius-pill);background:var(--jg-color-surface-alt);overflow:hidden;appearance:none}.jg-progress::-webkit-progress-bar{background:var(--jg-color-surface-alt)}.jg-progress::-webkit-progress-value{background:var(--jg-color-primary)}.jg-progress::-moz-progress-bar{background:var(--jg-color-primary)}@keyframes jg-spin{to{transform:rotate(360deg)}}.jg-spinner{display:inline-block;width:var(--jg-space-xl);height:var(--jg-space-xl);border:3px solid var(--jg-color-border);border-top-color:var(--jg-color-primary);border-radius:var(--jg-radius-pill);animation:jg-spin .8s linear infinite}.jg-field{display:flex;flex-direction:column;gap:var(--jg-space-xs)}.jg-field-label{font-size:var(--jg-size-sm);font-weight:var(--jg-font-weight-bold)}.jg-input{min-height:var(--jg-layout-touch-target);padding:var(--jg-space-sm) var(--jg-space-md);border:1px solid var(--jg-color-border);border-radius:var(--jg-radius-md);background:var(--jg-color-surface);color:var(--jg-color-text);font:inherit}.jg-checkbox{display:flex;align-items:center;gap:var(--jg-space-sm);min-height:var(--jg-layout-touch-target);cursor:pointer}.jg-input[aria-invalid=true]{border-color:var(--jg-color-danger)}.jg-field-error{color:var(--jg-color-danger);font-size:var(--jg-size-sm)}.jg-field-hint{color:var(--jg-color-text-muted);font-size:var(--jg-size-sm)}.jg-tabs{display:flex;gap:var(--jg-space-xs);border-bottom:1px solid var(--jg-color-border)}.jg-tab{min-height:var(--jg-layout-touch-target);padding:var(--jg-space-sm) var(--jg-space-lg);border:0;border-bottom:3px solid transparent;background:transparent;color:var(--jg-color-text-muted);font:inherit;cursor:pointer}.jg-tab[aria-selected=true]{border-bottom-color:var(--jg-color-primary);color:var(--jg-color-text);font-weight:var(--jg-font-weight-bold)}.jg-game{display:flex;flex-direction:column;gap:var(--jg-space-md)}.jg-game-board-column{display:flex;flex-direction:column;gap:var(--jg-space-sm);width:100%;max-width:520px;margin:0 auto}.jg-player-strip{display:flex;align-items:center;justify-content:space-between;gap:var(--jg-space-md);padding:var(--jg-space-sm) var(--jg-space-md);background:var(--jg-color-surface);border:1px solid var(--jg-color-border);border-radius:var(--jg-radius-md)}.jg-player-strip--turn{border-color:var(--jg-color-primary);border-width:2px}.jg-player-strip--tappable{cursor:pointer}.jg-player-name{display:flex;align-items:center;gap:var(--jg-space-sm);flex-wrap:wrap}.jg-clock{font-family:var(--jg-font-family-mono);font-size:var(--jg-size-lg);font-weight:var(--jg-font-weight-bold)}.jg-clock--running{color:var(--jg-color-primary)}.jg-clock--byoyomi{color:var(--jg-color-warning)}.jg-board{display:block;width:100%;height:auto;touch-action:manipulation;-webkit-user-select:none;user-select:none}.jg-board-surface{fill:var(--jg-color-board-surface)}.jg-board-lines line{stroke:var(--jg-color-board-line);stroke-width:1.5}.jg-board-last{fill:var(--jg-color-last-move)}.jg-board-piece circle{fill:var(--jg-color-piece-surface);stroke-width:2}.jg-board-piece text{font-size:var(--jg-size-xl);font-weight:var(--jg-font-weight-bold);font-family:var(--jg-font-family)}.jg-board-piece--cho circle{stroke:var(--jg-color-side-cho)}.jg-board-piece--cho text{fill:var(--jg-color-side-cho)}.jg-board-piece--han circle{stroke:var(--jg-color-side-han)}.jg-board-piece--han text{fill:var(--jg-color-side-han)}.jg-board-check{fill:none;stroke:var(--jg-color-danger);stroke-width:4;stroke-dasharray:8 4;pointer-events:none}.jg-board-selected{fill:none;stroke:var(--jg-color-selection);stroke-width:3}.jg-board-target{fill:var(--jg-color-move-target)}.jg-board-target--capture{fill:none;stroke:var(--jg-color-move-target);stroke-width:4}.jg-board-target--ability{fill:var(--jg-color-warning)}.jg-board-target--ability.jg-board-target--capture{fill:none;stroke:var(--jg-color-warning)}.jg-board-hit{fill:transparent}.jg-board-hit--active{cursor:pointer}.jg-formation-options{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--jg-space-sm)}.jg-formation-state{display:flex;flex-direction:column;gap:var(--jg-space-xs)}.jg-countdown{font-weight:var(--jg-font-weight-bold);font-size:var(--jg-size-xl)}.jg-ability-offers{display:flex;flex-direction:column;gap:var(--jg-space-sm)}.jg-ability-card{display:flex;flex-direction:column;align-items:flex-start;gap:var(--jg-space-xs);width:100%;padding:var(--jg-space-md);text-align:left;min-height:var(--jg-layout-touch-target);font:inherit;color:var(--jg-color-text);background:var(--jg-color-surface);border:2px solid var(--jg-color-primary);border-radius:var(--jg-radius-md);cursor:pointer}.jg-ability-card:disabled{opacity:.5;cursor:not-allowed}.jg-ability-badge{min-height:var(--jg-layout-touch-target);font:inherit;font-weight:var(--jg-font-weight-bold);padding:var(--jg-space-xs) var(--jg-space-sm);color:var(--jg-color-warning);background:var(--jg-color-warning-surface);border:1px solid var(--jg-color-warning);border-radius:var(--jg-radius-md);cursor:pointer}.jg-slider{width:100%;min-height:var(--jg-layout-touch-target);accent-color:var(--jg-color-primary)}.jg-move-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:var(--jg-space-xs);max-height:16rem;margin:0;padding:0;list-style:none;overflow-y:auto}.jg-move-button{width:100%;min-height:var(--jg-layout-touch-target);padding:var(--jg-space-xs) var(--jg-space-sm);text-align:left;font:inherit;color:var(--jg-color-text);background:var(--jg-color-surface);border:1px solid var(--jg-color-border);border-radius:var(--jg-radius-sm);cursor:pointer}.jg-move-button[aria-current=step]{border-color:var(--jg-color-primary);border-width:2px;background:var(--jg-color-info-surface);font-weight:var(--jg-font-weight-bold)}.jg-table-wrap{overflow-x:auto;border:1px solid var(--jg-color-border);border-radius:var(--jg-radius-md);background:var(--jg-color-surface)}.jg-table{width:100%;border-collapse:collapse;font-size:var(--jg-size-sm)}.jg-table-caption{padding:var(--jg-space-sm) var(--jg-space-md);text-align:left;color:var(--jg-color-text-muted)}.jg-table th,.jg-table td{padding:var(--jg-space-sm) var(--jg-space-md);text-align:left;vertical-align:top;border-top:1px solid var(--jg-color-border)}.jg-table th{color:var(--jg-color-text-muted);font-weight:var(--jg-font-weight-bold);white-space:nowrap}.jg-rules-card{touch-action:pan-y}.jg-rules-progress{color:var(--jg-color-text-muted);font-size:var(--jg-size-sm)}.jg-dot{display:inline-block;width:var(--jg-space-md);height:var(--jg-space-md);border-radius:var(--jg-radius-pill);background:var(--jg-color-border);flex:none}.jg-dot--online{background:var(--jg-color-success)}.jg-dot--busy{background:var(--jg-color-warning)}.jg-dot--offline{background:var(--jg-color-border)}.jg-dot--alert{background:var(--jg-color-danger)}.jg-bell{display:inline-flex;align-items:center;gap:var(--jg-space-xs);text-decoration:none}.jg-link-button{text-decoration:none;display:inline-flex;align-items:center}.jg-emblem{--emblem-ink: var(--jg-color-badge-common);--emblem-soft: var(--jg-color-badge-common-soft);display:inline-flex;flex:none;align-items:center;justify-content:center;padding:var(--jg-space-xxs);background:var(--emblem-ink);clip-path:polygon(30% 0,70% 0,100% 30%,100% 70%,70% 100%,30% 100%,0 70%,0 30%);vertical-align:middle}.jg-emblem--20{width:20px;height:20px;font-size:var(--jg-size-xs)}.jg-emblem--24{width:24px;height:24px;font-size:var(--jg-size-xs)}.jg-emblem--48{width:48px;height:48px;font-size:var(--jg-size-xl)}.jg-emblem--common{--emblem-ink: var(--jg-color-badge-common);--emblem-soft: var(--jg-color-badge-common-soft)}.jg-emblem--rare{--emblem-ink: var(--jg-color-badge-rare);--emblem-soft: var(--jg-color-badge-rare-soft)}.jg-emblem--epic{--emblem-ink: var(--jg-color-badge-epic);--emblem-soft: var(--jg-color-badge-epic-soft)}.jg-emblem--legendary{--emblem-ink: var(--jg-color-badge-legendary);--emblem-soft: var(--jg-color-badge-legendary-soft)}.jg-emblem--empty{--emblem-ink: var(--jg-color-border);--emblem-soft: var(--jg-color-surface-alt);color:var(--jg-color-text-muted)}.jg-emblem__face{display:flex;width:100%;height:100%;align-items:center;justify-content:center;background:var(--emblem-soft);color:var(--emblem-ink);font-family:var(--jg-font-family);font-weight:var(--jg-font-weight-bold);line-height:1;clip-path:polygon(30% 0,70% 0,100% 30%,100% 70%,70% 100%,30% 100%,0 70%,0 30%)}.jg-emblem-link{display:inline-flex;flex:none;min-width:var(--jg-layout-touch-target);min-height:var(--jg-layout-touch-target);align-items:center;justify-content:center;text-decoration:none}.jg-user-name{display:inline-flex;align-items:center;gap:var(--jg-space-xs);min-width:0}.jg-badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));gap:var(--jg-space-sm)}.jg-badge-card{display:flex;flex-direction:column;align-items:flex-start;gap:var(--jg-space-xs)}.jg-badge-card--locked{opacity:.7}
