:root{--bg:#F5EEE2;--card:#FFFDF8;--ink:#1E1A16;--mut:#6B6158;--line:#E4D9C8;--red:#C62828;--gold:#E8A33D}
*{box-sizing:border-box;margin:0;-webkit-tap-highlight-color:transparent}
html{font-size:20px}
body{background:var(--bg);color:var(--ink);font-family:"Pretendard Variable",Pretendard,-apple-system,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;line-height:1.35;padding:0 16px calc(110px + env(safe-area-inset-bottom));max-width:560px;margin:0 auto;word-break:keep-all;-webkit-user-select:none;user-select:none}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer;touch-action:manipulation}

header{display:flex;align-items:center;gap:12px;padding:calc(14px + env(safe-area-inset-top)) 2px 12px}
.logo{width:52px;height:52px;border-radius:14px;flex:none}
.brand b{display:block;font-size:30px;font-weight:900;letter-spacing:-.5px}
.brand span{font-size:17px;color:var(--mut);font-weight:600}
#inst{margin-left:auto;background:var(--ink);color:#fff;font-weight:800;font-size:17px;padding:12px 14px;border-radius:14px}

/* 지금 듣는 방송 */
.np{background:var(--card);border-radius:24px;padding:18px;margin-bottom:22px;box-shadow:0 4px 18px rgba(60,40,10,.10);border:2px solid var(--line)}
.np.first{text-align:center;padding:26px 18px 16px}
.hello{font-size:26px;line-height:1.4}
.hello b{font-weight:900}
.arrow{font-size:30px;color:var(--gold);animation:bob 1.2s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(6px)}}
.cap{font-size:18px;font-weight:700;color:var(--mut);margin-bottom:10px;display:flex;align-items:center;gap:8px}
.warn{font-size:19px;font-weight:700;color:var(--red);margin-bottom:12px}
.np.live{border-color:var(--c)}
.dot{width:12px;height:12px;border-radius:50%;background:var(--red);animation:blink 1.4s infinite}
@keyframes blink{50%{opacity:.25}}
.row{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.ttl{min-width:0}
.ttl b{display:block;font-size:30px;font-weight:900;line-height:1.2}
.ttl span{display:block;font-size:19px;color:var(--mut);font-weight:600;margin-top:4px}
.big{display:block;width:100%;min-height:76px;border-radius:18px;font-size:28px;font-weight:900;color:#fff}
.big.stop{background:var(--red)}
.big.play{background:var(--c)}
.big:active,.st:active,.tools button:active{transform:scale(.97)}
.tools{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
.tools button{min-height:62px;border-radius:16px;background:#F1E8DA;font-size:18px;font-weight:800;padding:6px}
.tools button.on{background:#FFE7B8}

/* 방송 목록 */
h2{font-size:21px;font-weight:900;margin:8px 4px 12px;color:var(--mut)}
.st{display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:var(--card);border:2px solid var(--line);border-radius:20px;padding:12px 16px 12px 12px;margin-bottom:12px;min-height:92px}
.st.on{border-color:var(--ink);background:#FFF6E3;box-shadow:0 0 0 3px var(--gold)}
.bd{flex:none;width:74px;height:68px;border-radius:14px;background:var(--c);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.1}
.bd b{font-size:17px;font-weight:900}
.bd i{font-style:normal;font-size:21px;font-weight:800;font-variant-numeric:tabular-nums}
.bd.big{width:88px;height:80px}
.bd.big i{font-size:24px}
.nm{flex:1;min-width:0}
.nm b{display:block;font-size:24px;font-weight:900}
.nm .gn,.nm .pg{display:block;font-size:17px;color:var(--mut);font-weight:600;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nm .pg{color:#8A5A12}
.go{flex:none;width:46px;height:46px;border-radius:50%;background:#F1E8DA;display:grid;place-items:center;font-size:18px;color:var(--ink)}
.eq{flex:none;display:flex;align-items:flex-end;gap:4px;height:30px;width:46px;justify-content:center}
.eq i{width:7px;background:var(--red);border-radius:3px;height:30%}
body.playing .eq i{animation:eq .9s ease-in-out infinite}
.eq i:nth-child(2){animation-delay:.25s!important}.eq i:nth-child(3){animation-delay:.5s!important}
@keyframes eq{0%,100%{height:25%}50%{height:100%}}
.foot{text-align:center;color:var(--mut);font-size:17px;margin:20px 0 0;line-height:1.5}

.toast{position:fixed;left:50%;bottom:calc(30px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:var(--ink);color:#fff;font-size:19px;font-weight:700;padding:16px 22px;border-radius:16px;opacity:0;transition:.25s;pointer-events:none;width:max-content;max-width:calc(100% - 32px);text-align:center;z-index:9}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* 아이폰 설치 안내 (위쪽 카드, 화면을 막지 않음) */
#iosg{position:fixed;inset:0;pointer-events:none;z-index:8;display:flex;align-items:flex-start;justify-content:center;padding:calc(10px + env(safe-area-inset-top)) 12px}
.ig-card{pointer-events:auto;position:relative;background:var(--ink);color:#fff;border-radius:18px;padding:16px 18px;max-width:420px;font-size:18px;box-shadow:0 8px 30px rgba(0,0,0,.3)}
.ig-card ol{padding-left:22px;margin-top:8px}.ig-card li{margin:6px 0}.ig-card small{display:block;opacity:.75;font-size:15px}
.ig-k{display:inline-block;background:#fff;color:var(--ink);border-radius:6px;padding:0 6px;font-weight:900}
.ig-x{position:absolute;top:6px;right:8px;color:#fff;font-size:22px;padding:6px 10px}

/* 아래 탭 */
.view{display:none}
body[data-tab=radio] .v-radio,body[data-tab=calc] .v-calc,body[data-tab=alarm] .v-alarm,body[data-tab=nav] .v-nav{display:block}
body:not([data-tab]) .v-radio{display:block}
#tabs{position:fixed;left:0;right:0;bottom:0;z-index:7;display:grid;grid-template-columns:repeat(4,1fr);background:#FFFDF8;border-top:2px solid var(--line);padding:6px 8px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -4px 16px rgba(60,40,10,.08)}
#tabs button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:76px;border-radius:16px;font-size:30px;line-height:1}
#tabs button span{font-size:19px;font-weight:800;color:var(--mut)}
#tabs button.on{background:#FFE7B8}
#tabs button.on span{color:var(--ink)}

/* 계산기 */
#calc{padding-top:4px}
.c-scr{background:#1E1A16;color:#fff;border-radius:22px;padding:16px 20px;margin-bottom:14px;text-align:right;min-height:150px;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden}
#c-ex{font-size:24px;color:#C9BBA6;min-height:32px;word-break:break-all;font-variant-numeric:tabular-nums}
#c-out{font-size:58px;font-weight:900;line-height:1.15;word-break:break-all;font-variant-numeric:tabular-nums}
#c-out.small{font-size:38px}
.c-keys{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.c-keys button{min-height:78px;border-radius:18px;background:var(--card);border:2px solid var(--line);font-size:34px;font-weight:800}
.c-keys button:active{transform:scale(.95);background:#F1E8DA}
.c-keys .k-op{background:#FFE7B8;border-color:#F2CF8A;font-size:38px}
.c-keys .k-c{background:var(--red);border-color:var(--red);color:#fff}
.c-keys .k-eq{grid-row:span 2;background:#1D4FA0;border-color:#1D4FA0;color:#fff;font-size:44px}
.c-keys [data-k="0"]{grid-column:span 1}

/* 알람 */
.box{background:var(--card);border:2px solid var(--line);border-radius:22px;padding:18px;margin:4px 0 18px}
.box h3{font-size:26px;font-weight:900;margin-bottom:6px}
.desc{font-size:19px;color:var(--mut);margin-bottom:14px;line-height:1.5}
.sw{display:block;width:100%;min-height:68px;border-radius:18px;font-size:26px;font-weight:900;background:#E9E1D3;color:var(--mut)}
.sw.on{background:#2E7D32;color:#fff}
.sw.sm{width:auto;min-height:56px;padding:0 16px;font-size:20px;display:inline-block}
.rng{margin:14px 0 6px}.rng.dim{opacity:.4}
.rrow{display:grid;grid-template-columns:52px 60px 1fr 60px;align-items:center;gap:8px;margin-bottom:10px}
.rrow span{font-size:19px;font-weight:700;color:var(--mut)}
.rrow b{font-size:24px;text-align:center}
.rrow button,.pick button{min-height:60px;border-radius:14px;background:#F1E8DA;font-size:28px;font-weight:900}
.ghost{display:block;width:100%;min-height:60px;border-radius:16px;background:#F1E8DA;font-size:20px;font-weight:800;margin-top:10px}
.al{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:2px solid #F1E8DA}
.al .tm{flex:1;font-size:40px;font-weight:900;font-variant-numeric:tabular-nums}
.al .tm .ap{font-size:22px;color:var(--mut)}
.al.off .tm{color:#B5AA9A}
.del{width:56px;height:56px;border-radius:14px;background:#F1E8DA;font-size:24px}
.box .big{margin-top:14px;font-size:26px}
.ed{margin-top:14px;padding-top:14px;border-top:2px dashed var(--line)}
.ampm{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.ampm button{min-height:64px;border-radius:16px;background:#F1E8DA;font-size:26px;font-weight:900;color:var(--mut)}
.ampm button.on{background:#1E1A16;color:#fff}
.pick{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.pick>div{display:grid;grid-template-rows:auto auto auto;justify-items:stretch;text-align:center;background:#FBF6EC;border-radius:18px;padding:8px}
.pick b{font-size:60px;font-weight:900;line-height:1.2;font-variant-numeric:tabular-nums}
.pick span{font-size:20px;color:var(--mut);margin:-6px 0 6px}
.appnote{background:#FFF1E0;border:2px solid #F2C08A;border-radius:20px;padding:16px;font-size:19px;line-height:1.5;margin-bottom:16px}
.appnote a{text-decoration:none;text-align:center;line-height:76px;margin-top:12px}

/* 알람 울릴 때 (웹) */
#ring{position:fixed;inset:0;z-index:20;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center}
#ring .ri{font-size:90px;animation:bob 1s ease-in-out infinite}
#ring .rt{font-size:46px;font-weight:900}
#ring .rs{font-size:24px;color:var(--mut);margin:6px 0 40px}
#ring .big{min-height:120px;font-size:36px}

/* 🎤 아즈마 아키 */
.st.aki{background:linear-gradient(135deg,#FFF0F5,#FFE3EC);border-color:#F3A6C0}
.st.aki img{flex:none;width:96px;height:68px;border-radius:14px;object-fit:cover}
#aki{position:fixed;inset:0;z-index:30;background:#1E1A16;color:#fff;display:none;flex-direction:column;padding:calc(10px + env(safe-area-inset-top)) 12px calc(10px + env(safe-area-inset-bottom))}
body.aki-on #aki{display:flex}
body.aki-on{overflow:hidden}
.ak-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.ak-top b{font-size:26px;font-weight:900}
.ak-top button{background:#fff;color:#1E1A16;font-size:22px;font-weight:900;padding:12px 18px;border-radius:14px}
.ak-vid{position:relative;width:100%;aspect-ratio:16/9;background:#000;border-radius:16px;overflow:hidden;flex:none}
.ak-vid iframe,#ak-player{position:absolute;inset:0;width:100%;height:100%;border:0}
.ak-now{font-size:28px;font-weight:900;margin:12px 4px 10px;line-height:1.25}
.ak-now small{display:block;font-size:17px;color:#C9BBA6;font-weight:700;margin-bottom:2px}
.ak-ctl{display:grid;grid-template-columns:1fr 1fr;gap:10px;flex:none}
.ak-ctl button{min-height:70px;border-radius:18px;background:#E2611F;color:#fff;font-size:24px;font-weight:900}
.ak-list{margin-top:12px;overflow-y:auto;flex:1;border-radius:16px;background:#2B2420}
.ak-list button{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:14px 14px;font-size:22px;font-weight:700;color:#F4EBDD;border-bottom:1px solid #3A3029;min-height:64px}
.ak-list button i{font-style:normal;width:36px;height:36px;border-radius:50%;background:#3A3029;display:grid;place-items:center;font-size:17px;flex:none}
.ak-list button.on{background:#5A2A12;color:#fff}
.ak-list button.on i{background:#E2611F}

/* 🚗 길찾기 */
#tabs button span{font-size:17px}
.pl{display:flex;gap:8px;align-items:center;margin-bottom:10px}
.pl-go{flex:1;display:flex;align-items:center;gap:12px;text-align:left;background:#EAF2FF;border:2px solid #B9CFF2;border-radius:18px;padding:14px;min-height:84px;min-width:0}
.pl-go i{font-style:normal;font-size:38px}
.pl-go span{flex:1;min-width:0}.pl-go b{display:block;font-size:26px;font-weight:900}
.pl-go small{display:block;font-size:16px;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-go em{font-style:normal;background:#1D4FA0;color:#fff;font-weight:900;font-size:18px;padding:10px 12px;border-radius:12px;flex:none}
.nf{display:flex;gap:8px}
.nf input{flex:1;min-width:0;font:inherit;font-size:22px;padding:14px;border:2px solid var(--line);border-radius:16px;background:#fff;-webkit-user-select:text;user-select:text}
.nf button{font-size:22px;font-weight:900;background:var(--ink);color:#fff;border-radius:16px;padding:0 18px}
.hint{font-size:16px;color:var(--mut);margin:8px 2px 4px}
.res{border-top:2px solid #F1E8DA;padding:14px 2px}
.res b{display:block;font-size:22px;font-weight:900}.res small{display:block;font-size:16px;color:var(--mut);margin-top:2px}
.ra,.lab{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.ra button,.lab button{min-height:58px;border-radius:14px;background:#F1E8DA;font-size:20px;font-weight:800}
.ra .go{background:#1D4FA0;color:#fff}
.lab button{background:#FFE7B8}

/* 앱 업데이트 안내 */
#upd{position:fixed;inset:0;z-index:40;background:rgba(30,26,22,.55);display:flex;align-items:center;justify-content:center;padding:16px}
.up-card{background:var(--card);border-radius:24px;padding:22px;max-width:440px;width:100%}
.up-card b{display:block;font-size:26px;font-weight:900;margin-bottom:8px}
.up-card p{font-size:19px;color:var(--mut);line-height:1.5;margin-bottom:6px}
.up-card a{text-decoration:none;text-align:center;line-height:76px;margin-top:10px}
.mic{display:block;width:100%;min-height:68px;margin-top:10px;border-radius:18px;background:#C62828;color:#fff;font-size:26px;font-weight:900}
.mic:active{transform:scale(.97)}

/* 하는 말 고치기 */
.say{background:#FBF6EC;border-radius:16px;padding:12px 14px;margin:12px 0 4px}
.say small{display:block;font-size:16px;color:var(--mut);font-weight:700}
.say p{font-size:22px;font-weight:800;margin:4px 0 2px;line-height:1.4}
.say .ghost{margin-top:8px;background:#fff;border:2px solid var(--line)}
.tchip{background:#FFE7B8;border-radius:8px;padding:0 6px;white-space:nowrap}
.ed2 textarea{width:100%;font:inherit;font-size:22px;font-weight:700;line-height:1.4;padding:12px;border:2px solid #E2611F;border-radius:14px;background:#fff;margin:8px 0;resize:none;-webkit-user-select:text;user-select:text}
.ex{display:flex;flex-direction:column;gap:6px}
.ex button{text-align:left;background:#fff;border:2px solid var(--line);border-radius:12px;padding:10px 12px;font-size:18px;font-weight:700}
