:root {
    --clr-bg: #f0f2f5;
    --clr-card: #ffffff;
    --clr-primary: #0069ff;
    --clr-text: #1e1e1e;
    --clr-muted: #6b6b6b;
    --radius: 12px;
    --transition: 0.3s;
    font-family: var(--font-sans);
}

* { margin:0; padding:0; box-sizing:border-box; }
body {
    background: var(--clr-bg);
    display: flex;
    align-items: center;
    justify-content: center;
    height:100vh;
    color: var(--clr-text);
}
.card {
    background: var(--clr-card);
    padding: 2rem;
    border-radius: var(--radius);
    box-shadow: 0 4px 16px rgba(0,0,0,0.1);
    width: 100%;
    max-width: 360px;
    text-align: center;
}
.card h1 {
    font-size: 1.75rem;
    margin-bottom: 0.5rem;
}
.subtitle {
    color: var(--clr-muted);
    margin-bottom: 1.5rem;
    font-weight: 500;
}
input {
    width: 100%;
    padding: 0.75rem;
    border: 1px solid #ccc;
    border-radius: var(--radius);
    font-size: 1rem;
    margin-bottom: 1rem;
}
button {
    width: 100%;
    padding: 0.75rem;
    background: var(--clr-primary);
    color: #fff;
    border: none;
    border-radius: var(--radius);
    font-size: 1rem;
    font-weight: 600;
    cursor: pointer;
    transition: background var(--transition);
}
button:hover {
    background: #0053cc;
}
.output {
    margin-top:1rem;
    font-size:1.25rem;
    font-weight:700;
}
.error {
    margin-top:0.75rem;
    color: #d32f2f;
}
.visually-hidden {
    position: absolute; width:1px; height:1px;
    padding:0; margin:-1px; overflow:hidden;
    clip:rect(0,0,0,0); border:0;
}