{% extends "core/base.html" %}
{% load static %}
{% load lyric_extras %}
{% block title_text %}Game Gate{% endblock title_text %}
{% block header_text %}GameGate{% endblock header_text %}
{% block content %}
{# Room renewal gate-view (sprint 2026-05-31) — reuses the EXACT gatekeeper #}
{# token-slot modal (`_gatekeeper.html` chrome: title panel + status-dots + #}
{# token-slot rails + roles panel), reachable mid-game. Unlike the #}
{# gatekeeper (which redirects to the table once table_status is set), GATE #}
{# VIEW routes here at any time so a seated gamer can renew. #}
{# • cost current → roles-panel `.btn-primary` is CONT GAME (→ table hex, #}
{# same target as the gear NVM); status " Token(s) Deposited . . . .".#}
{# • cost lapsed → no CONT GAME; the rails go active to RENEW; status #}
{# "Please Deposit Token . . . .". Renewing re-satisfies the cost and #}
{# the CONT GAME btn reappears. #}
{# No seat circle / countdown here — the table hex's own `.fa-chair` shows #}
{# seat status, and user/seat tooltips land next sprint (user-spec). #}
{# Cost current → claimed (static rails, token in the slot). #}
{# Cost lapsed → active rails that POST to renew_token. #}
{% if not cost_current %}
{% else %}
{% endif %}
1
INSERT TOKEN TO PLAYPUSH TO RETURN
{% if cost_current %}
{# CONT GAME — same destination as the gear NVM (the table #}
{# hex). Non-destructive nav, so no confirm guard. Only #}
{# rendered while the token cost is satisfied. #}
{% endif %}
{# NVM nav-backs one step to the table hex (not out to /gameboard/). #}
{% url 'epic:room' room.id as nvm_url %}
{% include "apps/gameboard/_partials/_room_gear.html" with nvm_url=nvm_url %}
{% include "apps/gameboard/_partials/_burger.html" %}