:root {
    --color-bg: #f7fafc;
    --color-panel: #ffffff;
    --color-border: #cbd5e0;
    --color-text: #2d3748;
    --color-accent: #2b6cb0;
    --color-accent-text: #ffffff;
    --color-result-bg: #edf2f7;
    --color-error: #c53030;
    --size-border: 0.0625rem;
    --size-radius: 0.375rem;
}

body {
    margin: 0;
    background: var(--color-bg);
    color: var(--color-text);
    font-family: "Microsoft JhengHei", sans-serif;
}

.area-app {
    max-width: 64rem;
    margin: 0 auto;
    padding: 2rem 1rem;
}

.area-layout {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
}

.area-main {
    flex: 3 1 0;
}

.area-log {
    flex: 2 1 0;
    background: var(--color-panel);
    border: var(--size-border) solid var(--color-border);
    border-radius: var(--size-radius);
    padding: 1rem;
}

.text-subtitle {
    margin: 0 0 0.75rem 0;
    font-size: 1rem;
}

.slot-log {
    min-height: 1.5rem;
}

.list-log {
    margin: 0;
    padding: 0;
    list-style: none;
}

.item-log {
    padding: 0.4rem 0;
    border-bottom: var(--size-border) solid var(--color-border);
    font-size: 0.8rem;
    word-break: break-all;
}

.text-title {
    font-size: 1.4rem;
    margin: 0 0 1.5rem 0;
}

.area-field {
    background: var(--color-panel);
    border: var(--size-border) solid var(--color-border);
    border-radius: var(--size-radius);
    padding: 1rem;
    margin-bottom: 1rem;
}

.text-label {
    display: block;
    font-weight: bold;
    margin-bottom: 0.5rem;
}

.slot-input {
    margin-bottom: 0.5rem;
}

.input-text {
    box-sizing: border-box;
    width: 100%;
    padding: 0.5rem;
    border: var(--size-border) solid var(--color-border);
    border-radius: var(--size-radius);
    font-size: 1rem;
}

.slot-result {
    min-height: 1.5rem;
}

.text-result {
    margin: 0;
    padding: 0.5rem;
    background: var(--color-result-bg);
    border-radius: var(--size-radius);
    word-break: break-all;
}

.text-result:empty {
    display: none;
}

.text-result-error {
    color: var(--color-error);
}

.slot-submit {
    margin-bottom: 0.75rem;
}

.button-submit {
    width: 100%;
    padding: 0.6rem;
    border: none;
    border-radius: var(--size-radius);
    background: var(--color-accent);
    color: var(--color-accent-text);
    font-size: 1rem;
    cursor: pointer;
}

.slot-status {
    min-height: 1.25rem;
}

.text-status {
    margin: 0;
    font-size: 0.85rem;
}