StartScreen.razor
@using Sandbox;
@using Sandbox.UI;
@using System;
@inherits PanelComponent

<root>
    <!-- Your Game Score / Fill Bars -->
    <div class="hud">
        <div class="bar-container">
            <label class="bar-label">Fill Progress</label>
            <div class="bar-track">
                <div class="bar-fill fill-bar" style="width: @(GetFillPercentage())%;"></div>
            </div>
        </div>

        <div class="bar-container">
            <label class="bar-label">Pour Budget</label>
            <div class="bar-track">
                <div class="bar-fill pour-bar" style="width: @(GetBudgetPercentage())%;"></div>
            </div>
        </div>
    </div>

    <!-- Start Screen Overlay -->
    <div class="start-screen-overlay @(IsWaitingToStart() ? "" : "hidden")">
        <div class="title-container">
            <h1>BOTTOMS UP</h1>
            <p class="subtitle">Pour the drink into the mouth. Don't run out of juice!</p>
        </div>

        <div class="instructions-box">
            <h2>How to Play</h2>
            <ul>
                <li><strong>Tilt the Bottle:</strong> Move your mouse to tilt the bottle.</li>
                <li><strong>Score Points:</strong> Land droplets successfully in the mouth target.</li>
                <li><strong>Watch the Budget:</strong> If you run out of pour budget before hitting the goal, you fail!</li>
            </ul>
        </div>

        <div class="prompt">
            <span class="click-text">CLICK LEFT MOUSE BUTTON TO START</span>
        </div>
    </div>
</root>

@code {
    private bool IsWaitingToStart()
    {
        var roundManager = Scene.GetAllComponents<RoundManager>().FirstOrDefault();
        return roundManager == null || roundManager.CurrentState == RoundManager.State.WaitingToStart;
    }

    private float GetFillPercentage()
    {
        var pour = Scene.GetAllComponents<PourController>().FirstOrDefault();
        if ( pour == null ) return 0;
        return MathF.Min( 100f, (pour.FillProgress / pour.FillGoal) * 100f );
    }

    private float GetBudgetPercentage()
    {
        var pour = Scene.GetAllComponents<PourController>().FirstOrDefault();
        if ( pour == null ) return 0;
        return MathF.Min( 100f, (pour.TotalPoured / pour.PourBudget) * 100f );
    }

    protected override int BuildHash()
    {
        return HashCode.Combine(IsWaitingToStart(), GetFillPercentage(), GetBudgetPercentage());
    }
}