/* ===========================================
   Hiragana Study - style.css (1/3)
=========================================== */

@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@500;700&display=swap');

:root{

--green:#58cc02;
--green-dark:#46b000;

--blue:#1cb0f6;

--bg:#f7f7f7;

--card:#ffffff;

--text:#3c3c3c;

--border:#e5e5e5;

--shadow:0 8px 18px rgba(0,0,0,.08);

}

*{

margin:0;
padding:0;
box-sizing:border-box;

}

body{

font-family:Pretendard,"Noto Sans JP",sans-serif;

background:var(--bg);

color:var(--text);

display:flex;

justify-content:center;

min-height:100vh;

padding:30px;

}

/* ========================= */

.app{

width:100%;

max-width:520px;

}

/* ========================= */

.screen{

display:none;

animation:fade .3s;

}

.screen.active{

display:block;

}

@keyframes fade{

from{

opacity:0;
transform:translateY(10px);

}

to{

opacity:1;
transform:none;

}

}

/* ========================= */

.title{

font-size:34px;

font-weight:800;

margin-bottom:8px;

text-align:center;

}

.sub{

text-align:center;

font-size:16px;

color:#777;

margin-bottom:30px;

}

/* ========================= */

.grid{

display:grid;

grid-template-columns:repeat(2,1fr);

gap:14px;

margin-bottom:24px;

}

/* ========================= */

.card{

background:white;

border:2px solid var(--border);

border-radius:18px;

padding:18px;

cursor:pointer;

text-align:center;

font-weight:700;

font-size:18px;

transition:.2s;

user-select:none;

box-shadow:var(--shadow);

}

.card:hover{

transform:translateY(-3px);

}

.card.active{

background:var(--green);

border-color:var(--green);

color:white;

}

/* ========================= */

.start{

width:100%;

padding:18px;

border:none;

border-radius:18px;

background:var(--green);

color:white;

font-size:20px;

font-weight:700;

cursor:pointer;

transition:.2s;

box-shadow:var(--shadow);

}

.start:hover{

background:var(--green-dark);

transform:translateY(-2px);

}/* ===========================================
   Hiragana Study - style.css (2/3)
=========================================== */

/* 상단 상태바 */

.top{

display:flex;

justify-content:space-between;

align-items:center;

background:white;

padding:14px 18px;

border-radius:18px;

box-shadow:var(--shadow);

margin-bottom:18px;

font-size:15px;

font-weight:700;

}

/* 문제 카드 */

.card-box{

background:var(--card);

border-radius:22px;

padding:30px;

box-shadow:var(--shadow);

text-align:center;

}

/* 문제 */

#question{

font-family:"Noto Sans JP",sans-serif;

font-size:110px;

font-weight:700;

margin-bottom:24px;

transition:.25s;

}

/* 입력창 */

#answer{

width:100%;

padding:18px;

font-size:24px;

font-weight:600;

text-align:center;

border:2px solid var(--border);

border-radius:16px;

outline:none;

transition:.2s;

margin-bottom:18px;

}

#answer:focus{

border-color:var(--blue);

box-shadow:0 0 0 5px rgba(28,176,246,.15);

}

/* placeholder */

#answer::placeholder{

color:#b7b7b7;

font-size:18px;

}

/* 결과 */

#result{

min-height:60px;

margin-top:10px;

font-size:22px;

font-weight:700;

line-height:1.6;

}

/* 버튼 */

.row{

display:flex;

gap:10px;

margin-top:22px;

}

.row button{

flex:1;

padding:15px;

border:none;

border-radius:14px;

background:#f1f3f5;

font-size:15px;

font-weight:700;

cursor:pointer;

transition:.2s;

}

.row button:hover{

background:var(--green);

color:white;

transform:translateY(-2px);

}

/* 진행바 */

.progress{

width:100%;

height:12px;

background:#e8e8e8;

border-radius:999px;

overflow:hidden;

margin-bottom:20px;

}

.progress-bar{

height:100%;

width:0%;

background:var(--green);

transition:width .35s ease;

border-radius:999px;

}/* ===========================================
   Hiragana Study - style.css (3/3)
=========================================== */

/* 정답 */

.correct{

color:var(--green);

animation:pop .4s;

}

/* 오답 */

.wrong{

color:#ff4b4b;

animation:shake .45s;

}

/* 문제 정답 효과 */

.correct-pop{

animation:correctPop .45s;

}

/* 문제 흔들림 */

.shake{

animation:shake .45s;

}

/* 팝 */

@keyframes pop{

0%{

transform:scale(.7);

opacity:0;

}

70%{

transform:scale(1.15);

opacity:1;

}

100%{

transform:scale(1);

}

}

/* 정답 */

@keyframes correctPop{

0%{

transform:scale(1);

}

50%{

transform:scale(1.18);

color:var(--green);

}

100%{

transform:scale(1);

}

}

/* 흔들림 */

@keyframes shake{

0%{

transform:translateX(0);

}

20%{

transform:translateX(-8px);

}

40%{

transform:translateX(8px);

}

60%{

transform:translateX(-8px);

}

80%{

transform:translateX(8px);

}

100%{

transform:translateX(0);

}

}

/* 버튼 클릭 */

button:active{

transform:scale(.96);

}

/* 스크롤 */

::-webkit-scrollbar{

width:8px;

}

::-webkit-scrollbar-thumb{

background:#d9d9d9;

border-radius:999px;

}

/* 모바일 */

@media(max-width:600px){

body{

padding:16px;

}

.title{

font-size:28px;

}

.sub{

font-size:15px;

}

.grid{

grid-template-columns:1fr 1fr;

gap:10px;

}

.card{

padding:14px;

font-size:16px;

}

.start{

padding:16px;

font-size:18px;

}

.top{

font-size:13px;

padding:12px;

}

.card-box{

padding:22px;

}

#question{

font-size:82px;

}

#answer{

font-size:20px;

padding:16px;

}

#result{

font-size:18px;

}

.row{

gap:6px;

}

.row button{

padding:12px;

font-size:13px;

}

}

/* 작은 모바일 */

@media(max-width:380px){

.grid{

grid-template-columns:1fr;

}

.row{

flex-wrap:wrap;

}

.row button{

flex:1 1 calc(50% - 6px);

}

#question{

font-size:68px;

}

}

/* 다크모드(기본 지원) */

@media(prefers-color-scheme:dark){

:root{

--bg:#111317;

--card:#1b1d22;

--text:#f4f4f4;

--border:#31343a;

}

body{

background:var(--bg);

color:var(--text);

}

.card,
.card-box,
.top{

background:var(--card);

color:var(--text);

border-color:var(--border);

}

#answer{

background:#24272d;

color:#fff;

border-color:#3a3d45;

}

#answer::placeholder{

color:#8f939b;

}

.row button{

background:#2d3036;

color:#fff;

}

.row button:hover{

background:var(--green);

}

.progress{

background:#2c2f35;

}

}/* ===========================
   부드러운 전역 애니메이션
=========================== */

*{
transition:
background-color .25s ease,
color .25s ease,
border-color .25s ease,
transform .18s cubic-bezier(.2,.8,.2,1),
box-shadow .25s ease,
opacity .25s ease;
}

/* 화면 등장 */

.screen.active{
animation:screenFade .45s cubic-bezier(.2,.8,.2,1);
}

@keyframes screenFade{

from{

opacity:0;
transform:translateY(25px);

}

to{

opacity:1;
transform:translateY(0);

}

}

/* 카드 */

.card{

transform:translateY(0);

}

.card:hover{

transform:translateY(-6px) scale(1.02);

box-shadow:0 14px 30px rgba(0,0,0,.12);

}

.card:active{

transform:scale(.98);

}

/* 시작 버튼 */

.start:hover{

transform:translateY(-3px);

}

.start:active{

transform:scale(.98);

}

/* 문제 등장 */

#question{

animation:questionFade .35s;

}

@keyframes questionFade{

from{

opacity:0;

transform:scale(.85);

}

to{

opacity:1;

transform:scale(1);

}

}

/* 입력창 */

#answer:focus{

transform:scale(1.02);

}

/* 결과 */

#result{

animation:fadeResult .25s;

}

@keyframes fadeResult{

from{

opacity:0;

transform:translateY(10px);

}

to{

opacity:1;

transform:none;

}

}

/* 버튼 */

.row button{

transition:.2s;

}

.row button:hover{

transform:translateY(-3px);

}

.row button:active{

transform:scale(.94);

}

/* 진행바 */

.progress-bar{

transition:width .4s cubic-bezier(.2,.8,.2,1);

}

/* 상단 상태 */

.top{

animation:topFade .45s;

}

@keyframes topFade{

from{

opacity:0;

transform:translateY(-15px);

}

to{

opacity:1;

transform:none;

}

}

/* 정답 */

.correct{

animation:correctAnim .55s;

}

@keyframes correctAnim{

0%{

transform:scale(.8);

opacity:0;

}

40%{

transform:scale(1.15);

}

100%{

transform:scale(1);

opacity:1;

}

}

/* 오답 */

.wrong{

animation:wrongAnim .5s;

}

@keyframes wrongAnim{

10%{transform:translateX(-8px);}
20%{transform:translateX(8px);}
30%{transform:translateX(-8px);}
40%{transform:translateX(8px);}
50%{transform:translateX(-5px);}
60%{transform:translateX(5px);}
100%{transform:none;}

}/* ===============================
   Duolingo Feedback
================================ */

.feedback{

position:fixed;

left:0;
right:0;
bottom:-220px;

background:white;

border-top-left-radius:28px;
border-top-right-radius:28px;

box-shadow:0 -12px 40px rgba(0,0,0,.15);

padding:28px;

transition:.45s cubic-bezier(.22,.8,.2,1);

z-index:999;

}

.feedback.show{

bottom:0;

}

.feedback.correct{

background:#d7ffbf;

}

.feedback.wrong{

background:#ffe2e2;

}

.feedback-title{

font-size:28px;

font-weight:800;

margin-bottom:12px;

}

.feedback-text{

font-size:20px;

font-weight:600;

}

#countdown{

margin-top:16px;

height:8px;

background:rgba(0,0,0,.08);

border-radius:999px;

overflow:hidden;

}

#countdown::after{

content:"";

display:block;

height:100%;

width:100%;

background:#58cc02;

transform-origin:left;

animation:countdown 5s linear forwards;

}

.feedback.wrong #countdown::after{

background:#ff5b5b;

}

@keyframes countdown{

from{

transform:scaleX(1);

}

to{

transform:scaleX(0);

}

}.quiz-header{
    display:flex;
    justify-content:flex-start;
    margin:12px 0 18px;
}

.home-btn{
    background:#fff;
    border:1px solid #e5e5e5;
    border-radius:12px;
    padding:10px 16px;
    font-size:14px;
    font-weight:700;
    cursor:pointer;
    transition:.2s;
}

.home-btn:hover{
    background:#58cc02;
    color:#fff;
    border-color:#58cc02;
}