:root {
    --bg: #f4f0e8;
    --bg-ink: #18352a;
    --surface: rgba(255, 252, 247, 0.88);
    --surface-strong: #fffdf8;
    --surface-muted: #ece5d8;
    --line: rgba(24, 53, 42, 0.12);
    --line-strong: rgba(24, 53, 42, 0.2);
    --text: #1b2f27;
    --text-soft: #647369;
    --accent: #1c8a63;
    --accent-strong: #0f6d4d;
    --accent-pale: #dff1e8;
    --gold: #b8863f;
    --rose: #b85f52;
    --shadow-soft: 0 18px 45px rgba(40, 48, 41, 0.08);
    --shadow-card: 0 10px 24px rgba(40, 48, 41, 0.08);
    --radius-xl: 32px;
    --radius-lg: 24px;
    --radius-md: 18px;
    --radius-sm: 12px;
    --font-display: "Fraunces", serif;
    --font-ui: "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Source Han Sans SC", "Microsoft YaHei", sans-serif;
    --font-jp: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif;
}

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    scroll-behavior: smooth;
}

body {
    min-height: 100vh;
    background:
        radial-gradient(circle at 12% 14%, rgba(255, 255, 255, 0.9), transparent 28%),
        radial-gradient(circle at 88% 2%, rgba(198, 228, 214, 0.55), transparent 24%),
        linear-gradient(180deg, #f6f1e9 0%, #efe8db 100%);
    color: var(--text);
    font-family: var(--font-ui);
    line-height: 1.6;
    overflow-x: hidden;
}

button,
input,
select {
    font: inherit;
}

button {
    cursor: pointer;
}

.page-orb {
    position: fixed;
    border-radius: 999px;
    filter: blur(12px);
    pointer-events: none;
    opacity: 0.9;
    z-index: 0;
}

.orb-left {
    top: 8rem;
    left: -8rem;
    width: 20rem;
    height: 20rem;
    background: radial-gradient(circle, rgba(181, 214, 198, 0.55), transparent 68%);
}

.orb-right {
    top: 20rem;
    right: -10rem;
    width: 24rem;
    height: 24rem;
    background: radial-gradient(circle, rgba(233, 218, 185, 0.5), transparent 68%);
}

.app-header,
.app-shell {
    position: relative;
    z-index: 1;
}

.app-header {
    max-width: 1380px;
    margin: 0 auto;
    padding: 2rem 1.4rem 1.2rem;
    display: grid;
    grid-template-columns: minmax(0, 1.1fr) auto auto;
    gap: 1rem 1.5rem;
    align-items: end;
}

.brand-block h1 {
    font-family: var(--font-display);
    font-size: clamp(2.4rem, 4vw, 4.2rem);
    line-height: 0.95;
    letter-spacing: -0.04em;
    font-weight: 700;
    max-width: 10ch;
}

.subtitle,
.muted-copy,
.field span,
.queue-item small,
.mini-word-card span,
.mini-word-card small {
    color: var(--text-soft);
}

.eyebrow {
    font-size: 0.72rem;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--accent-strong);
    font-weight: 700;
}

.main-nav {
    justify-self: end;
    display: inline-flex;
    gap: 0.4rem;
    padding: 0.4rem;
    border: 1px solid var(--line);
    border-radius: 999px;
    background: rgba(255, 253, 248, 0.74);
    backdrop-filter: blur(10px);
    box-shadow: var(--shadow-card);
}

.nav-btn,
.button-primary,
.button-secondary,
.button-danger,
.icon-btn {
    border: none;
    transition: transform 0.22s ease, box-shadow 0.22s ease, background-color 0.22s ease, color 0.22s ease, border-color 0.22s ease;
}

.nav-btn {
    padding: 0.7rem 1rem;
    border-radius: 999px;
    background: transparent;
    color: var(--text-soft);
    font-family: var(--font-ui);
    font-weight: 600;
    white-space: nowrap;
    writing-mode: horizontal-tb;
    text-orientation: mixed;
    line-height: 1.1;
    flex: 0 0 auto;
}

.nav-btn:hover,
.nav-btn:focus-visible {
    transform: translateY(-1px);
    color: var(--text);
}

.nav-btn.active {
    background: var(--bg-ink);
    color: #f8f5ef;
    box-shadow: 0 10px 20px rgba(24, 53, 42, 0.18);
}

.nav-btn.locked:not(.active) {
    opacity: 0.6;
}

.header-actions {
    justify-self: end;
    display: flex;
    gap: 0.7rem;
    flex-wrap: wrap;
}

.icon-btn {
    padding: 0.78rem 1.1rem;
    border-radius: 999px;
    background: var(--surface-strong);
    border: 1px solid var(--line);
    color: var(--text);
    font-family: var(--font-ui);
    box-shadow: var(--shadow-card);
}

.icon-btn:hover,
.button-primary:hover,
.button-secondary:hover,
.button-danger:hover {
    transform: translateY(-1px);
}

.icon-btn.active {
    background: var(--bg-ink);
    color: #f8f5ef;
    border-color: transparent;
    box-shadow: 0 12px 24px rgba(24, 53, 42, 0.18);
}

.icon-btn-muted {
    background: rgba(255, 255, 255, 0.08);
    color: #f6efe4;
    border: 1px solid rgba(255, 255, 255, 0.14);
    box-shadow: none;
}

.app-shell {
    max-width: 1380px;
    margin: 0 auto;
    padding: 0 1.4rem 3rem;
}

.view-section {
    display: none;
    animation: rise-in 0.42s ease;
}

.view-section.active {
    display: block;
}

@keyframes rise-in {
    from {
        opacity: 0;
        transform: translateY(12px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.hero-panel,
.control-panel,
.section-head,
.study-card-shell,
.queue-panel,
.pronounce-card,
.panel-card,
.audio-modal-card {
    background: var(--surface);
    border: 1px solid var(--line);
    backdrop-filter: blur(14px);
    box-shadow: var(--shadow-soft);
}

.hero-panel {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(19rem, 0.95fr);
    gap: 1.5rem;
    padding: 2rem;
    border-radius: var(--radius-xl);
    overflow: hidden;
}

.hero-panel h2,
.section-head h3,
.queue-head h4,
.modal-header h2,
.audio-panel h3 {
    font-family: var(--font-ui);
    line-height: 1.05;
}

.section-head h3,
.queue-head h4,
.setting-card h3,
.study-answer h4,
.empty-state-card h4 {
    font-family: var(--font-ui);
    font-weight: 700;
    letter-spacing: -0.02em;
}

.hero-panel h2 {
    font-size: clamp(2rem, 3vw, 3.2rem);
    letter-spacing: -0.04em;
    max-width: 12ch;
}

.hero-copy {
    margin-top: 1rem;
    max-width: 40rem;
    color: var(--text-soft);
}

.knowledge-panel {
    margin-top: 1.2rem;
    padding: 1rem;
    border-radius: var(--radius-lg);
    border: 1px solid rgba(24, 53, 42, 0.1);
    background: linear-gradient(145deg, rgba(255, 255, 255, 0.85), rgba(240, 235, 225, 0.8));
    display: grid;
    gap: 0.9rem;
    overflow: hidden;
}

.knowledge-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.knowledge-head h3 {
    font-family: var(--font-ui);
    font-size: 1.5rem;
    line-height: 1.08;
}

.knowledge-marquee {
    overflow: hidden;
    mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}

.knowledge-track {
    display: flex;
    gap: 0.85rem;
    width: max-content;
    animation: knowledge-scroll 42s linear infinite;
}

.knowledge-chip {
    min-width: 22rem;
    max-width: 22rem;
    padding: 0.95rem 1rem;
    border-radius: var(--radius-md);
    background: rgba(24, 53, 42, 0.05);
    border: 1px solid rgba(24, 53, 42, 0.08);
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.8rem;
    align-items: start;
}

.knowledge-chip p {
    color: var(--text);
}

.knowledge-chip strong {
    display: block;
    margin-bottom: 0.28rem;
    color: var(--accent-strong);
    font-size: 0.88rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.knowledge-index {
    font-family: var(--font-display);
    font-size: 1.3rem;
    line-height: 1;
    color: var(--accent-strong);
}

@keyframes knowledge-scroll {
    from {
        transform: translateX(0);
    }

    to {
        transform: translateX(calc(-50% - 0.425rem));
    }
}

.hero-metrics,
.progress-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.9rem;
}

.metric-card {
    min-height: 8.4rem;
    padding: 1.15rem 1.2rem;
    border-radius: var(--radius-md);
    background:
        linear-gradient(145deg, rgba(255, 255, 255, 0.92), rgba(244, 238, 228, 0.88)),
        linear-gradient(180deg, rgba(28, 138, 99, 0.08), transparent);
    border: 1px solid rgba(24, 53, 42, 0.08);
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.metric-card span {
    color: var(--text-soft);
    font-size: 0.95rem;
}

.metric-card strong {
    font-family: var(--font-display);
    font-size: clamp(2rem, 3vw, 3rem);
    letter-spacing: -0.05em;
    line-height: 1;
}

.stage-grid {
    margin-top: 1.2rem;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1rem;
}

.setting-card,
.stage-card {
    background: rgba(255, 253, 248, 0.9);
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-card);
}

.setting-card {
    padding: 1.2rem;
    display: flex;
    flex-direction: column;
    gap: 0.7rem;
}

.stage-card strong {
    font-family: var(--font-display);
}

.setting-card h3 {
    font-size: 1.6rem;
    line-height: 1.05;
    letter-spacing: -0.04em;
}

.settings-table {
    margin-top: 1.2rem;
    background: linear-gradient(145deg, rgba(255, 253, 248, 0.94), rgba(244, 238, 228, 0.92));
    border: 1px solid var(--line);
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-card);
    overflow: hidden;
}

.settings-table-head {
    padding: 1.25rem 1.35rem;
    display: grid;
    grid-template-columns: minmax(0, 18rem) minmax(0, 1fr);
    gap: 1rem;
    align-items: end;
    background: linear-gradient(180deg, rgba(28, 138, 99, 0.06), rgba(255, 253, 248, 0.24));
    border-bottom: 1px solid rgba(24, 53, 42, 0.08);
}

.settings-table-head h3 {
    font-family: var(--font-ui);
    font-size: 2rem;
    line-height: 1.02;
    letter-spacing: -0.04em;
}

.settings-row {
    display: grid;
    grid-template-columns: minmax(12rem, 0.62fr) minmax(16rem, 0.95fr) minmax(16rem, 1.2fr);
    gap: 1rem;
    align-items: center;
    padding: 1.15rem 1.35rem;
    border-top: 1px solid rgba(24, 53, 42, 0.08);
}

.settings-row:first-of-type {
    border-top: 0;
}

.settings-row-label {
    display: grid;
    gap: 0.25rem;
}

.settings-row-label h4 {
    font-family: var(--font-ui);
    font-size: 1.55rem;
    line-height: 1.05;
    letter-spacing: -0.03em;
}

.settings-row-control {
    min-width: 0;
}

.settings-row-control .field {
    gap: 0.35rem;
}

.settings-row-summary {
    margin: 0;
    max-width: 34rem;
}

.settings-row-curve {
    align-items: start;
}

.curve-lane {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.55rem;
}

.curve-chip {
    min-height: 4.9rem;
    padding: 0.8rem;
    border-radius: var(--radius-sm);
    background: rgba(24, 53, 42, 0.05);
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.curve-chip strong {
    font-size: 0.92rem;
    color: var(--accent-strong);
}

.curve-chip span {
    color: var(--text);
    font-weight: 600;
}

.control-panel,
.section-head,
.study-layout,
.pronounce-stage,
.progress-panels {
    margin-top: 1.2rem;
}

.control-panel,
.section-head {
    border-radius: var(--radius-lg);
    padding: 1.1rem;
}

.control-panel {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) repeat(2, minmax(11rem, 0.5fr));
    gap: 1rem;
}

.section-head {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 1rem;
}

.section-head h3 {
    font-size: 2rem;
    letter-spacing: -0.04em;
}

.field-grid,
.inline-actions {
    display: flex;
    gap: 0.8rem;
}

.field-grid {
    flex-wrap: wrap;
}

.field,
.field-wide,
.compact-field {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.field span {
    font-size: 0.82rem;
    font-weight: 600;
}

.field input,
.field select {
    min-height: 3rem;
    border-radius: 16px;
    border: 1px solid var(--line);
    background: rgba(255, 255, 255, 0.88);
    padding: 0.82rem 0.95rem;
    color: var(--text);
    outline: none;
}

.field input:focus,
.field select:focus {
    border-color: rgba(28, 138, 99, 0.45);
    box-shadow: 0 0 0 4px rgba(28, 138, 99, 0.12);
}

.field-wide {
    min-width: 0;
}

.field-wide input {
    width: 100%;
}

.compact-field {
    min-width: 10.5rem;
}

.field-note {
    color: var(--text-soft);
    font-size: 0.78rem;
    line-height: 1.5;
}

.button-primary,
.button-secondary,
.button-danger {
    min-height: 3rem;
    border-radius: 999px;
    padding: 0.72rem 1.2rem;
    font-weight: 700;
}

.button-primary {
    background: var(--bg-ink);
    color: #f8f5ef;
    box-shadow: 0 12px 24px rgba(24, 53, 42, 0.15);
}

.button-secondary {
    background: rgba(255, 255, 255, 0.9);
    color: var(--text);
    border: 1px solid var(--line);
}

.button-danger {
    background: #8e4135;
    color: #fff4ef;
}

.button-primary:disabled,
.button-secondary:disabled,
.button-danger:disabled,
.icon-btn:disabled {
    opacity: 0.55;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

.gate-banner {
    margin-top: 1.2rem;
    padding: 1rem 1.1rem;
    border-radius: var(--radius-lg);
    border: 1px solid var(--line);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    background: rgba(255, 253, 248, 0.88);
    box-shadow: var(--shadow-card);
}

.gate-banner h3 {
    font-family: var(--font-ui);
    font-size: 1.5rem;
    line-height: 1.08;
}

.gate-banner-locked {
    background: linear-gradient(145deg, rgba(255, 245, 240, 0.94), rgba(255, 251, 247, 0.92));
    border-color: rgba(184, 95, 82, 0.2);
}

.gate-banner-unlocked {
    background: linear-gradient(145deg, rgba(223, 241, 232, 0.92), rgba(255, 252, 247, 0.95));
    border-color: rgba(28, 138, 99, 0.18);
}

.gate-banner-optional {
    background: linear-gradient(145deg, rgba(240, 248, 244, 0.96), rgba(255, 252, 247, 0.95));
    border-color: rgba(95, 136, 118, 0.18);
}

.gate-toggle {
    width: 100%;
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    padding: 1rem 1.05rem;
    background: linear-gradient(145deg, rgba(255, 255, 255, 0.88), rgba(245, 239, 229, 0.9));
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    text-align: left;
    transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}

.gate-toggle:hover {
    transform: translateY(-1px);
    box-shadow: 0 14px 28px rgba(24, 53, 42, 0.08);
}

.gate-toggle.active {
    border-color: rgba(28, 138, 99, 0.24);
    background: linear-gradient(145deg, rgba(223, 241, 232, 0.92), rgba(255, 252, 247, 0.95));
}

.gate-toggle-copy {
    display: grid;
    gap: 0.25rem;
}

.gate-toggle-copy strong {
    font-size: 1.15rem;
}

.gate-toggle-copy small {
    color: var(--text-soft);
}

.gate-toggle-pill {
    width: 3.5rem;
    height: 2rem;
    border-radius: 999px;
    background: rgba(174, 182, 176, 0.35);
    position: relative;
    flex-shrink: 0;
    transition: background-color 0.2s ease;
}

.gate-toggle-pill::after {
    content: '';
    position: absolute;
    top: 0.22rem;
    left: 0.24rem;
    width: 1.55rem;
    height: 1.55rem;
    border-radius: 50%;
    background: #fffdf8;
    box-shadow: 0 8px 16px rgba(24, 53, 42, 0.18);
    transition: transform 0.2s ease;
}

.gate-toggle.active .gate-toggle-pill {
    background: rgba(28, 138, 99, 0.72);
}

.gate-toggle.active .gate-toggle-pill::after {
    transform: translateX(1.45rem);
}

.kana-layout,
.dictionary-layout,
.kana-drill-layout {
    margin-top: 1.2rem;
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(22rem, 0.92fr);
    gap: 1rem;
}

.kana-board,
.kana-focus-panel,
.kana-drill-panel,
.kana-lock-panel,
.dictionary-guide,
.dictionary-side {
    display: grid;
    gap: 1rem;
}

.kana-drill-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.kana-drill-head h4,
.kana-lock-panel h4 {
    font-family: var(--font-ui);
    font-size: 1.55rem;
    line-height: 1.08;
}

.kana-drill-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
    gap: 0.85rem;
}

.kana-drill-grid > .empty-state-card,
.kana-drill-grid > .empty-state {
    grid-column: 1 / -1;
}

.kana-quiz-card {
    min-width: 0;
    padding: 1rem;
    border-radius: var(--radius-md);
    border: 1px solid rgba(24, 53, 42, 0.1);
    background: rgba(255, 255, 255, 0.82);
    display: grid;
    gap: 0.8rem;
    align-content: start;
}

.kana-quiz-card.correct {
    border-color: rgba(28, 138, 99, 0.24);
    background: rgba(223, 241, 232, 0.7);
}

.kana-quiz-card.wrong {
    border-color: rgba(184, 95, 82, 0.22);
    background: rgba(255, 244, 241, 0.78);
}

.kana-quiz-head {
    display: flex;
    justify-content: space-between;
    gap: 0.4rem;
    align-items: center;
}

.kana-quiz-prompt {
    font-family: var(--font-jp);
    font-size: 2.5rem;
    line-height: 1;
    color: var(--bg-ink);
}

.kana-quiz-prompt.romaji {
    font-family: var(--font-ui);
    font-size: 1.6rem;
    letter-spacing: 0.08em;
    text-transform: lowercase;
}

.kana-quiz-feedback {
    color: var(--text-soft);
}

.kana-drill-panel .inline-actions {
    justify-content: flex-end;
    flex-wrap: wrap;
}

.kana-lock-panel {
    align-content: start;
    background:
        radial-gradient(circle at top right, rgba(184, 95, 82, 0.12), transparent 26%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.94), rgba(245, 239, 229, 0.95));
}

.kana-group-tabs,
.type-quick-grid {
    display: grid;
    gap: 0.75rem;
}

.kana-group-tabs {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.kana-group-tab,
.type-quick-card {
    border: 1px solid var(--line);
    border-radius: var(--radius-md);
    background: rgba(255, 255, 255, 0.78);
    padding: 0.95rem 1rem;
    text-align: left;
    display: grid;
    gap: 0.25rem;
    transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}

.kana-group-tab span,
.type-quick-card span {
    font-weight: 700;
    color: var(--text);
}

.kana-group-tab small,
.type-quick-card small {
    color: var(--text-soft);
}

.kana-group-tab.active,
.type-quick-card.active,
.type-card.is-selected {
    background: linear-gradient(145deg, rgba(223, 241, 232, 0.92), rgba(255, 252, 247, 0.95));
    border-color: rgba(28, 138, 99, 0.24);
    box-shadow: inset 0 0 0 1px rgba(28, 138, 99, 0.1);
}

.kana-grid-panel {
    display: grid;
    gap: 0.8rem;
}

.kana-row {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 0.75rem;
}

.kana-cell {
    min-height: 6.6rem;
    border-radius: var(--radius-md);
    border: 1px solid rgba(24, 53, 42, 0.1);
    background:
        linear-gradient(160deg, rgba(255, 255, 255, 0.92), rgba(242, 235, 224, 0.88)),
        linear-gradient(180deg, rgba(28, 138, 99, 0.08), transparent);
    padding: 0.95rem;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    text-align: left;
}

.kana-cell strong,
.kana-cell span,
.kana-dual-mark span {
    font-family: var(--font-jp);
}

.kana-cell strong {
    font-size: 2rem;
    line-height: 1;
}

.kana-cell span {
    font-size: 1.15rem;
    color: var(--accent-strong);
}

.kana-cell small {
    color: var(--text-soft);
}

.kana-cell.active {
    transform: translateY(-2px);
    border-color: rgba(28, 138, 99, 0.28);
    box-shadow: 0 18px 28px rgba(28, 67, 52, 0.08);
}

.kana-cell-empty {
    visibility: hidden;
}

.kana-focus-head,
.kana-back-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.8rem;
}

.kana-focus-head h4,
.kana-back-head h4,
.dictionary-guide h4,
.dictionary-side h4,
.type-card-head h4 {
    font-family: var(--font-ui);
    font-size: 1.6rem;
    line-height: 1.08;
}

.kana-card-shell {
    perspective: 1200px;
}

.kana-card-inner {
    position: relative;
    min-height: 32rem;
    transform-style: preserve-3d;
    transition: transform 0.5s ease;
}

.kana-card-shell.is-flipped .kana-card-inner {
    transform: rotateY(180deg);
}

.kana-flash-card {
    position: absolute;
    inset: 0;
    padding: 1.35rem;
    border-radius: var(--radius-lg);
    border: 1px solid rgba(24, 53, 42, 0.08);
    background:
        radial-gradient(circle at top right, rgba(184, 134, 63, 0.12), transparent 26%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.95), rgba(245, 239, 229, 0.94));
    backface-visibility: hidden;
    display: grid;
    align-content: start;
    gap: 1rem;
}

.kana-back {
    transform: rotateY(180deg);
}

.kana-dual-mark {
    display: grid;
    gap: 0.4rem;
    margin-top: 0.4rem;
}

.kana-dual-mark span:first-child {
    font-size: clamp(4rem, 8vw, 6.5rem);
    line-height: 0.9;
}

.kana-dual-mark span:last-child {
    font-size: clamp(2rem, 4vw, 3rem);
    color: var(--accent-strong);
}

.kana-romaji {
    font-size: 1.1rem;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--accent-strong);
    font-weight: 700;
}

.kana-example-columns,
.dictionary-guide-grid,
.type-grid {
    display: grid;
    gap: 0.9rem;
}

.kana-example-columns,
.dictionary-guide-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.kana-example-column,
.guide-chip,
.type-card {
    border-radius: var(--radius-md);
    border: 1px solid var(--line);
    background: rgba(255, 255, 255, 0.72);
}

.kana-example-column {
    padding: 1rem;
    display: grid;
    gap: 0.7rem;
}

.kana-example-card {
    padding: 0.9rem;
    border-radius: var(--radius-sm);
    background: rgba(24, 53, 42, 0.05);
    display: grid;
    gap: 0.6rem;
}

.kana-example-card strong,
.kana-example-card span {
    display: block;
    font-family: var(--font-jp);
}

.kana-example-card strong {
    font-size: 1.35rem;
}

.kana-example-card span {
    color: var(--accent-strong);
}

.guide-chip {
    padding: 1rem;
    display: grid;
    gap: 0.4rem;
}

.guide-chip strong {
    color: var(--text);
}

.type-quick-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.type-quick-card strong {
    font-family: var(--font-display);
    font-size: 2rem;
    line-height: 1;
    color: var(--bg-ink);
}

.type-grid {
    margin-top: 1.2rem;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.type-card {
    padding: 1rem;
    display: grid;
    gap: 0.7rem;
}

.type-card-head {
    display: flex;
    justify-content: space-between;
    gap: 0.8rem;
    align-items: flex-start;
}

.type-card-summary {
    color: var(--accent-strong);
    font-weight: 700;
}

.word-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1rem;
    margin-top: 1rem;
}

.word-card,
.empty-state-card,
.mini-word-card,
.queue-item {
    border-radius: var(--radius-md);
    border: 1px solid var(--line);
}

.word-card {
    background: rgba(255, 253, 248, 0.92);
    box-shadow: var(--shadow-card);
    padding: 1.2rem;
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
    min-height: 15rem;
    transition: transform 0.22s ease, border-color 0.22s ease, box-shadow 0.22s ease;
}

.word-card:hover {
    transform: translateY(-3px);
    border-color: rgba(28, 138, 99, 0.24);
    box-shadow: 0 18px 32px rgba(40, 48, 41, 0.1);
}

.word-note,
.detail-copy {
    color: var(--text-soft);
    font-size: 0.92rem;
}

.word-card-head,
.word-actions,
.toggle-row,
.queue-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.8rem;
}

.word-pair {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.kana-jump-stack {
    display: grid;
    gap: 0.35rem;
}

.kana-unit-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}

.kana-unit {
    min-width: 2.2rem;
    min-height: 2.2rem;
    padding: 0.35rem 0.55rem;
    border-radius: 999px;
    border: 1px solid rgba(24, 53, 42, 0.12);
    background: rgba(255, 255, 255, 0.82);
    color: var(--text);
    font-family: var(--font-jp);
    font-size: 1rem;
    font-weight: 700;
}

.kana-unit:hover,
.kana-group-tab:hover,
.type-quick-card:hover,
.kana-cell:hover {
    transform: translateY(-1px);
    border-color: rgba(28, 138, 99, 0.28);
}

.kana-unit-row.secondary .kana-unit {
    background: rgba(223, 241, 232, 0.58);
    color: var(--accent-strong);
}

.kana-jump-stack.wide .kana-unit {
    min-width: 2.6rem;
    min-height: 2.6rem;
    font-size: 1.08rem;
}

.word-pair span:first-child,
.study-word-main,
.pronounce-word,
.word-kanji {
    font-family: var(--font-jp);
}

.word-pair span:first-child {
    font-size: 1.8rem;
    letter-spacing: -0.04em;
}

.kana-primary {
    font-size: 1.8rem;
    letter-spacing: -0.04em;
}

.word-pair span:last-child,
.study-word-sub,
.pronounce-word.sub {
    font-family: var(--font-jp);
    font-size: 1rem;
    color: var(--accent-strong);
}

.kana-secondary {
    color: var(--accent-strong);
}

.romaji-hint {
    display: block;
    color: var(--text-soft);
    font-size: 0.88rem;
    letter-spacing: 0.1em;
    text-transform: lowercase;
}

.study-romaji,
.pronounce-romaji {
    margin-top: 0.25rem;
    font-size: 0.98rem;
}

.queue-romaji {
    font-style: normal;
    margin-top: 0.08rem;
}

.star-toggle {
    min-width: 4.5rem;
    min-height: 2.5rem;
    padding: 0.5rem 0.8rem;
    border-radius: 999px;
    border: 1px solid var(--line);
    background: transparent;
    color: var(--text-soft);
    font-weight: 700;
}

.star-toggle.active {
    background: rgba(184, 134, 63, 0.14);
    border-color: rgba(184, 134, 63, 0.38);
    color: #7e5a2a;
}

.word-kanji {
    font-family: var(--font-jp);
    font-size: 2rem;
    letter-spacing: -0.05em;
    line-height: 1.05;
}

.word-meaning {
    color: var(--text-soft);
    min-height: 3.1rem;
}

.word-badges,
.study-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
}

.library-meta,
.schedule-note {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    color: var(--text-soft);
    font-size: 0.82rem;
}

.pill {
    display: inline-flex;
    align-items: center;
    min-height: 1.9rem;
    padding: 0.2rem 0.7rem;
    border-radius: 999px;
    background: rgba(24, 53, 42, 0.06);
    color: var(--text-soft);
    font-size: 0.8rem;
    font-weight: 600;
}

.pill-accent {
    background: rgba(28, 138, 99, 0.11);
    color: var(--accent-strong);
}

.pill-mastered {
    background: rgba(28, 138, 99, 0.15);
    color: var(--accent-strong);
}

.pill-level {
    background: rgba(24, 53, 42, 0.12);
    color: var(--bg-ink);
}

.pill-neutral {
    background: rgba(24, 53, 42, 0.07);
    color: var(--text-soft);
}

.pill-learning {
    background: rgba(184, 134, 63, 0.15);
    color: #7f5a2a;
}

.pill-due {
    background: rgba(184, 95, 82, 0.16);
    color: #8a3f34;
}

.pill-starred {
    background: rgba(184, 134, 63, 0.16);
    color: #7d5a29;
}

.word-actions {
    margin-top: auto;
}

.study-layout,
.progress-panels {
    display: grid;
    grid-template-columns: minmax(0, 1.45fr) minmax(18rem, 0.82fr);
    gap: 1rem;
}

.pronounce-stage {
    margin-top: 1.2rem;
    display: block;
}

.pronounce-reading-grid {
    margin-top: 1rem;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
}

.study-card-shell,
.queue-panel,
.pronounce-card,
.panel-card {
    border-radius: var(--radius-lg);
    padding: 1.2rem;
}

.study-card-shell {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.pronounce-card {
    display: grid;
    gap: 1rem;
    align-content: start;
    background:
        radial-gradient(circle at top right, rgba(181, 214, 198, 0.18), transparent 22%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(246, 240, 231, 0.98));
}

.pronounce-reading-card {
    display: grid;
    gap: 0.9rem;
    align-content: start;
}

.study-card {
    position: relative;
    overflow: hidden;
    min-height: 27rem;
    border-radius: calc(var(--radius-lg) - 2px);
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.92), rgba(246, 240, 231, 0.94)),
        repeating-linear-gradient(180deg, rgba(24, 53, 42, 0.03) 0, rgba(24, 53, 42, 0.03) 1px, transparent 1px, transparent 40px);
    border: 1px solid rgba(24, 53, 42, 0.08);
}

.study-card-front,
.study-card-back {
    padding: 1.6rem;
}

.study-card-front {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1rem;
}

.study-card.is-empty .study-card-front {
    justify-content: center;
}

.word-display {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.study-word-main {
    font-size: clamp(3rem, 6vw, 5.8rem);
    line-height: 0.95;
    letter-spacing: -0.06em;
}

.study-word-sub {
    font-size: 1.5rem;
    letter-spacing: 0.02em;
}

.pronounce-hero {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(18rem, 0.9fr);
    gap: 1.1rem;
    align-items: start;
}

.pronounce-hero-copy,
.pronounce-hero-side {
    display: grid;
    gap: 0.65rem;
}

.pronounce-hero-copy {
    padding: 1.15rem 1.2rem;
    border-radius: var(--radius-md);
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.88), rgba(244, 238, 228, 0.92)),
        repeating-linear-gradient(180deg, rgba(24, 53, 42, 0.03) 0, rgba(24, 53, 42, 0.03) 1px, transparent 1px, transparent 34px);
    border: 1px solid rgba(24, 53, 42, 0.08);
}

.pronounce-hero-side {
    align-content: start;
}

.pronounce-meaning {
    color: var(--text-soft);
    font-size: 1rem;
    line-height: 1.6;
}

.pronounce-actions {
    margin-top: 0.35rem;
    flex-wrap: wrap;
}

.pronounce-actions .button-primary,
.pronounce-actions .button-secondary {
    width: auto;
}

.pronounce-kana-row {
    padding: 0.1rem 0;
}

.pronounce-spotlight {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 1rem;
    padding: 1rem 1.05rem;
    border-radius: var(--radius-md);
    background: linear-gradient(145deg, rgba(223, 241, 232, 0.62), rgba(255, 252, 247, 0.9));
    border: 1px solid rgba(28, 138, 99, 0.12);
}

.pronounce-spotlight.compact {
    padding: 0.95rem 1rem;
}

.pronounce-spotlight-copy {
    display: grid;
    gap: 0.4rem;
}

.pronounce-spotlight-copy h4 {
    font-family: var(--font-jp);
    font-size: clamp(1.4rem, 2vw, 2rem);
    line-height: 1.35;
    letter-spacing: -0.04em;
}

.pronounce-spotlight-note {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
    align-items: flex-end;
}

.study-word-kanji,
.pronounce-kanji {
    font-family: var(--font-jp);
    font-size: clamp(1.5rem, 3vw, 2.4rem);
    color: var(--text-soft);
}

.queue-item span,
.mini-word-card strong,
.example-head p,
.example-block .muted-copy {
    font-family: var(--font-jp);
}

.study-card-back {
    border-top: 1px dashed rgba(24, 53, 42, 0.12);
}

.study-answer h4 {
    margin-top: 0.4rem;
    font-size: 2rem;
    line-height: 1.08;
    letter-spacing: -0.04em;
}

.example-stack {
    display: grid;
    gap: 0.7rem;
    margin-top: 1rem;
}

.pronounce-reading-list {
    display: grid;
    gap: 0.8rem;
}

.reading-item {
    padding: 0.95rem 1rem;
    border-radius: var(--radius-md);
    background: rgba(255, 255, 255, 0.74);
    border: 1px solid rgba(24, 53, 42, 0.08);
    display: grid;
    gap: 0.55rem;
}

.reading-item-empty {
    min-height: 8rem;
    align-content: center;
}

.reading-item-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.8rem;
}

.reading-item-head h5 {
    font-family: var(--font-ui);
    font-size: 1.05rem;
    line-height: 1.25;
}

.reading-jp {
    font-family: var(--font-jp);
    font-size: 1rem;
    line-height: 1.8;
    color: var(--text);
}

.reading-translation {
    color: var(--text-soft);
    line-height: 1.7;
}

.reading-play-btn {
    flex-shrink: 0;
    min-width: 7rem;
}

.example-block {
    padding: 0.9rem 1rem;
    border-radius: var(--radius-sm);
    background: rgba(24, 53, 42, 0.05);
    display: grid;
    gap: 0.2rem;
}

.example-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.8rem;
}

.example-audio-btn {
    flex-shrink: 0;
    min-height: 2.2rem;
    padding: 0.45rem 0.8rem;
    border-radius: 999px;
    border: 1px solid rgba(24, 53, 42, 0.12);
    background: rgba(255, 255, 255, 0.82);
    color: var(--text);
    font-size: 0.82rem;
    font-weight: 700;
}

.example-audio-btn:hover {
    transform: translateY(-1px);
    border-color: rgba(28, 138, 99, 0.26);
}

.hidden {
    display: none !important;
}

.study-actions {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.8rem;
}

.queue-panel,
.panel-card {
    min-height: 100%;
}

.queue-head {
    margin-bottom: 0.9rem;
}

.queue-head h4 {
    font-size: 1.4rem;
    letter-spacing: -0.03em;
}

.queue-list {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
}

.queue-item {
    width: 100%;
    text-align: left;
    padding: 0.9rem 1rem;
    background: rgba(255, 255, 255, 0.72);
    border: 1px solid rgba(24, 53, 42, 0.1);
}

.queue-item span {
    display: block;
    font-weight: 700;
    color: var(--text);
}

.queue-item.active {
    background: var(--accent-pale);
    border-color: rgba(28, 138, 99, 0.28);
    box-shadow: inset 0 0 0 1px rgba(28, 138, 99, 0.14);
}

.pronounce-card {
    min-height: 26rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 0.7rem;
    background:
        radial-gradient(circle at top right, rgba(184, 134, 63, 0.12), transparent 24%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.92), rgba(245, 239, 229, 0.95));
}

.pronounce-word {
    font-size: clamp(3.2rem, 6vw, 5.5rem);
    letter-spacing: -0.06em;
    line-height: 0.95;
}

.pronounce-word.sub {
    font-size: 1.4rem;
}

.progress-panels {
    margin-bottom: 2rem;
}

.progress-panels-wide {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.stage-card {
    padding: 1rem;
    display: grid;
    gap: 0.35rem;
}

.stage-card span,
.stage-card small {
    color: var(--text-soft);
}

.stage-card strong {
    font-size: 2rem;
    line-height: 1;
    letter-spacing: -0.05em;
}

.mini-word-card {
    padding: 0.9rem 1rem;
    background: rgba(255, 255, 255, 0.7);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.mini-word-card strong {
    display: block;
}

.mini-word-card span {
    text-align: right;
    font-size: 0.92rem;
}

.empty-state,
.empty-state-card {
    color: var(--text-soft);
}

.empty-state-card {
    display: grid;
    gap: 0.45rem;
    padding: 1.4rem;
    background: rgba(255, 253, 248, 0.86);
}

.empty-state-card.compact {
    padding: 1.2rem;
}

.empty-state-card h4 {
    font-size: 1.6rem;
    line-height: 1.08;
    letter-spacing: -0.04em;
    color: var(--text);
}

.empty-state {
    padding: 1rem;
    border-radius: var(--radius-sm);
    border: 1px dashed rgba(24, 53, 42, 0.18);
    background: rgba(255, 255, 255, 0.5);
}

.modal-overlay {
    position: fixed;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.5rem;
    background: rgba(16, 31, 26, 0.62);
    backdrop-filter: blur(8px);
    z-index: 10;
}

.audio-modal-card {
    width: min(52rem, 100%);
    max-height: calc(100vh - 3rem);
    overflow: auto;
    padding: 1.4rem;
    border-radius: var(--radius-xl);
    color: #f8f3eb;
    background:
        radial-gradient(circle at top right, rgba(184, 134, 63, 0.14), transparent 20%),
        linear-gradient(180deg, #173229 0%, #132821 100%);
    border: 1px solid rgba(255, 255, 255, 0.12);
    box-shadow: 0 28px 60px rgba(0, 0, 0, 0.32);
}

.modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}

.audio-panel {
    padding: 1rem 0;
    border-top: 1px solid rgba(255, 255, 255, 0.12);
}

.audio-panel:first-of-type {
    border-top: none;
    padding-top: 0;
}

.audio-panel .field input {
    background: rgba(255, 255, 255, 0.08);
    color: #fcf7ef;
    border-color: rgba(255, 255, 255, 0.14);
}

.audio-panel .field input::placeholder {
    color: rgba(255, 255, 255, 0.42);
}

.audio-panel .field span,
.audio-panel .muted-copy,
.audio-panel #voicevox-status,
.audio-panel #tts-status,
.modal-header .icon-btn {
    color: rgba(248, 243, 235, 0.76);
}

.toggle-row {
    margin: 0.9rem 0;
}

.switch {
    position: relative;
    width: 3.2rem;
    height: 1.9rem;
    display: inline-block;
}

.switch input {
    opacity: 0;
    width: 0;
    height: 0;
}

.slider {
    position: absolute;
    inset: 0;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.2);
}

.slider::before {
    content: "";
    position: absolute;
    width: 1.35rem;
    height: 1.35rem;
    left: 0.26rem;
    top: 0.26rem;
    border-radius: 50%;
    background: #fff8ef;
    transition: transform 0.22s ease;
}

.switch input:checked + .slider {
    background: rgba(28, 138, 99, 0.82);
}

.switch input:checked + .slider::before {
    transform: translateX(1.3rem);
}

@media (max-width: 1120px) {
    .app-header {
        grid-template-columns: 1fr;
        align-items: start;
    }

    .main-nav,
    .header-actions {
        justify-self: start;
    }

    .hero-panel,
    .stage-grid,
    .kana-layout,
    .kana-drill-layout,
    .dictionary-layout,
    .study-layout,
    .pronounce-reading-grid,
    .progress-panels {
        grid-template-columns: 1fr;
    }

    .word-grid,
    .type-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .kana-drill-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .control-panel {
        grid-template-columns: 1fr;
    }

    .pronounce-hero {
        grid-template-columns: 1fr;
    }

    .settings-table-head,
    .settings-row {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 720px) {
    .page-orb {
        display: none;
    }

    .app-header,
    .app-shell {
        padding-left: 1rem;
        padding-right: 1rem;
    }

    .hero-panel,
    .control-panel,
    .section-head,
    .study-card-shell,
    .queue-panel,
    .pronounce-card,
    .panel-card,
    .audio-modal-card {
        padding: 1rem;
        border-radius: 22px;
    }

    .main-nav {
        width: 100%;
        overflow-x: auto;
        justify-content: flex-start;
        padding-bottom: 0.2rem;
        -webkit-overflow-scrolling: touch;
    }

    .nav-btn {
        white-space: nowrap;
        flex: 0 0 auto;
    }

    .knowledge-head {
        flex-direction: column;
        align-items: stretch;
    }

    .knowledge-chip {
        min-width: 18rem;
        max-width: 18rem;
    }

    .hero-metrics,
    .kana-drill-grid,
    .kana-group-tabs,
    .kana-row,
    .kana-example-columns,
    .dictionary-guide-grid,
    .type-quick-grid,
    .curve-lane,
    .progress-grid,
    .stage-grid,
    .study-actions,
    .word-grid,
    .type-grid {
        grid-template-columns: 1fr;
    }

    .section-head,
    .inline-actions,
    .gate-banner,
    .word-card-head,
    .word-actions,
    .example-head,
    .toggle-row,
    .queue-head {
        flex-direction: column;
        align-items: stretch;
    }

    .kana-drill-panel .inline-actions {
        justify-content: stretch;
    }

    .button-primary,
    .button-secondary,
    .button-danger,
    .icon-btn {
        width: 100%;
        justify-content: center;
    }

    .field-grid {
        flex-direction: column;
    }

    .study-word-main,
    .pronounce-word {
        font-size: 3.3rem;
    }

    .mini-word-card {
        flex-direction: column;
        align-items: flex-start;
    }

    .mini-word-card span {
        text-align: left;
    }

    .settings-table-head,
    .settings-row {
        padding: 1rem;
    }

    .settings-row-label h4,
    .settings-table-head h3 {
        font-size: 1.5rem;
    }

    .gate-toggle {
        padding: 0.9rem 0.95rem;
    }

    .reading-item-head {
        flex-direction: column;
        align-items: stretch;
    }

    .pronounce-spotlight {
        grid-template-columns: 1fr;
    }

    .pronounce-spotlight-note {
        align-items: flex-start;
    }

    .app-header {
        position: static;
        padding-top: 1rem;
        padding-bottom: 0.6rem;
        backdrop-filter: none;
        background: transparent;
        border-bottom: 0;
    }

    .brand-block h1 {
        font-size: 2rem;
        max-width: none;
    }

    .brand-block .eyebrow {
        opacity: 0;
        height: 0;
        overflow: hidden;
    }

    .header-actions {
        width: 100%;
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.6rem;
    }

    .app-shell {
        padding-top: 0;
        padding-bottom: 2rem;
    }
}
