/* 레이아웃: 밝은 회색 바닥 가운데에 402×874 화면의 아이폰을 비율 그대로 놓고, 화면 안은 iOS 라이트 모드 */
:root{
  --ink:#000; --gray:#8e8e93; --gray2:#aeaeb2; --sep:rgba(60,60,67,.2); --bg:#f2f2f7; --fill:rgba(118,118,128,.12);
  --blue:#007aff; --green:#34c759; --red:#ff3b30; --tint:var(--blue); --seoha:#7a1f2b;
  --kakao:#fee500; --kakao-bg:#bacee0;
  --font:'Pretendard Variable',Pretendard,-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Noto Sans KR',system-ui,sans-serif;
  color-scheme:light;
}
[hidden]{display:none!important}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%;margin:0}
body{overflow:hidden;font-family:var(--font);color:var(--ink);background:#dfe3e8}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;text-align:inherit}
input{font:inherit}

/* 바깥 무대 */
#stage{position:fixed;inset:0;display:grid;place-items:center;padding-bottom:28px;background:radial-gradient(circle at 18% 18%,#fcfdfd 0,transparent 28%),linear-gradient(140deg,#e6eaed 0%,#ccd3d9 100%)}
.ambient{position:absolute;filter:blur(70px);border-radius:50%;opacity:.4;pointer-events:none}
.ambient-one{width:340px;height:340px;background:#bad0ff;right:14%;top:12%}
.ambient-two{width:250px;height:250px;background:#f8d8c9;left:16%;bottom:8%}
.intro{position:absolute;left:7vw;top:50%;transform:translateY(-50%);color:#20252b;pointer-events:none}
.intro .eyebrow{font:500 11px 'DM Mono',monospace;letter-spacing:.14em;margin:0}
.intro h1{font-size:clamp(34px,4vw,62px);line-height:.98;letter-spacing:-.06em;margin:18px 0;font-weight:800}
.intro p:last-child{font-size:14px;line-height:1.7;color:#5b636d;margin:0}
.instruction{position:absolute;bottom:14px;left:16px;right:16px;text-align:center;font:500 11px 'DM Mono','Pretendard Variable',monospace;letter-spacing:.06em;color:#3a434c;margin:0;pointer-events:none}
@media (max-width:980px){.intro{display:none}}

/* 기기 */
#phoneWrap{position:relative;flex:none}
#buzz{position:absolute;inset:0}
#buzz.on{animation:buzz .07s linear infinite}
@keyframes buzz{0%{transform:translate(0,0)}25%{transform:translate(1px,-.6px)}50%{transform:translate(-1px,.5px)}75%{transform:translate(.6px,1px)}100%{transform:translate(0,0)}}
#phone{position:absolute;left:0;top:0;width:424px;height:896px;transform-origin:0 0;border-radius:68px;padding:3px;
  background:linear-gradient(145deg,#4a4d55,#1b1d21 38%,#3a3d44 70%,#16171a);box-shadow:0 34px 60px -22px rgba(25,30,40,.5),0 8px 18px rgba(25,30,40,.18),inset 0 0 0 1px rgba(255,255,255,.12)}
.bezel{position:absolute;inset:3px;border-radius:65px;background:#000;padding:8px}
.sbtn{position:absolute;width:4px;background:linear-gradient(90deg,#26282c,#55585f);border-radius:2px}
.sbtn.l1{left:-3px;top:150px;height:34px}.sbtn.l2{left:-3px;top:215px;height:62px}.sbtn.l3{left:-3px;top:290px;height:62px}
.sbtn.r1{right:-3px;top:240px;height:96px;background:linear-gradient(270deg,#26282c,#5a5d64);cursor:pointer}
.sbtn.r1:active{transform:translateX(-1px)}
.sbtn.r1::after{content:'';position:absolute;inset:-12px -18px -12px -8px}/* 손가락으로도 누르기 쉽게 */
#screen{position:relative;width:402px;height:874px;border-radius:57px;overflow:hidden;background:#000;isolation:isolate;
  font-size:17px;line-height:1.35;letter-spacing:-.015em;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
#screen input{user-select:text;-webkit-user-select:text}

html.full #phone{padding:0;border-radius:0;background:none;box-shadow:none;width:402px;height:auto}
html.full .bezel{position:static;padding:0;border-radius:0}
html.full #screen{border-radius:0}
html.full .sbtn,html.full .instruction{display:none}
html.full #stage{padding-bottom:0}
html.full #edgeBtn{display:block}
#edgeBtn{display:none;position:absolute;right:0;top:200px;width:12px;height:120px;z-index:90}

/* 화면 공통 */
.layer{position:absolute;inset:0;overflow:hidden}
.wall{position:absolute;inset:0;background:
  radial-gradient(70% 45% at 18% 12%,#ffd2b5 0,transparent 70%),
  radial-gradient(60% 40% at 92% 30%,#a9b9ff 0,transparent 72%),
  radial-gradient(90% 55% at 30% 80%,#4a3b7a 0,transparent 70%),
  linear-gradient(172deg,#f0b4a4 0%,#b58fc0 38%,#5c5a9e 66%,#1f1b3a 100%);background-size:cover;background-position:center}
.wall.blur{filter:blur(26px) saturate(1.25);transform:scale(1.2)}
#island{position:absolute;top:11px;left:50%;width:124px;height:36px;margin-left:-62px;background:#000;border-radius:20px;z-index:97;pointer-events:none;overflow:hidden;display:flex;align-items:center;justify-content:center}
.isl{display:flex;align-items:center;gap:8px;color:#fff;font-size:14px;font-weight:600;white-space:nowrap;padding:0 16px;opacity:0}
.isl .heart{font-style:normal;color:#ff375f;font-size:16px}
.isl .heart.down{color:#8e8e93}
.isl.big{gap:12px;width:100%;justify-content:flex-start;padding:0 20px}
.isl.big .heart{width:40px;height:40px;border-radius:50%;background:rgba(255,55,95,.2);display:grid;place-items:center;font-size:20px;flex:none}
.isl.big span{display:flex;flex-direction:column;line-height:1.3;min-width:0}
.isl.big b{font-size:14.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.isl.big small{font-size:12px;opacity:.6;font-weight:500}
#statusbar{position:absolute;top:0;left:0;right:0;height:54px;z-index:94;display:flex;align-items:center;justify-content:space-between;padding:0 30px 0 36px;color:#fff;pointer-events:none;transition:color .25s}
#screen[data-sb="dark"] #statusbar{color:#000}
#screen[data-sb="none"] #statusbar{display:none}
#sbTime{font-weight:600;font-size:17px;width:64px;text-align:center;padding-top:2px;letter-spacing:-.01em}
#screen[data-lock="1"] #sbTime{visibility:hidden}
.sb-r{display:flex;align-items:center;gap:6px}
.bat{position:relative;width:27px;height:13px;border:1.3px solid currentColor;border-radius:4px;display:flex;align-items:center;padding:1.5px;opacity:.95}
.bat::after{content:"";position:absolute;right:-3.6px;top:3.6px;width:2px;height:3.6px;border-radius:0 1px 1px 0;background:currentColor;opacity:.5}
.bat i{display:block;height:100%;border-radius:1.5px;background:currentColor}
#homebar{position:absolute;left:50%;bottom:8px;width:140px;height:5px;margin-left:-70px;border-radius:3px;background:#fff;z-index:93;pointer-events:none;transition:background .25s}
#screen[data-sb="dark"] #homebar{background:#000}
#homebarHit{position:absolute;left:0;right:0;bottom:0;height:30px;z-index:92;touch-action:none;cursor:grab}
#screen[data-hb="0"] #homebar,#screen[data-hb="0"] #homebarHit{display:none}
#screen[data-lock="1"] #homebarHit{display:none}
#blackout{position:absolute;inset:0;background:#000;z-index:99;opacity:0;pointer-events:none;transition:opacity .35s ease}
#blackout.on{opacity:1;pointer-events:auto}

/* 꺼진 화면·부팅 */
#L-off{background:#000;display:grid;place-items:center;cursor:pointer}
#L-off span{color:rgba(255,255,255,.3);font-size:15px;letter-spacing:.04em}
#L-boot{background:#000;display:grid;place-items:center;transition:opacity .4s}
#L-boot.out{opacity:0}
.spinner{position:relative;width:30px;height:30px}
.spinner i{position:absolute;left:13.5px;top:0;width:3px;height:8.5px;border-radius:2px;background:#fff;transform-origin:1.5px 15px;animation:spin 1s steps(12) infinite}
@keyframes spin{from{opacity:1}to{opacity:.15}}

/* 처음 설정 — 인사 화면과 이름 화면이 옆으로 넘어가요 */
#L-setup{background:#fff;color:#000;z-index:80}
.su-pane{position:absolute;inset:0;background:#fff;will-change:transform}
#suHello{display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;touch-action:none}
.su-hello-word{font-size:52px;font-weight:700;letter-spacing:-.03em;background:linear-gradient(120deg,#1c1c1e 20%,#7a1f2b 60%,#c8657a);-webkit-background-clip:text;background-clip:text;color:transparent;padding:0 20px;text-align:center}
.su-hello-foot{position:absolute;bottom:62px;display:flex;flex-direction:column;align-items:center;gap:8px;color:#8e8e93;font-size:15px;animation:hintFloat 2.4s ease-in-out infinite}
.su-hello-foot svg{width:22px;height:11px}
.su-back{position:absolute;top:56px;left:10px;display:flex;align-items:center;gap:4px;color:var(--blue);font-size:17px;padding:6px}
.su-back svg{width:11px;height:19px}
.su-form{display:flex;flex-direction:column;align-items:center;padding:108px 28px 0;height:100%;text-align:center}
.su-emblem{width:64px;height:64px;border-radius:18px;background:linear-gradient(150deg,#9b2c3b,#4a1019);color:#fff;font:700 20px 'DM Mono',monospace;display:grid;place-items:center;box-shadow:0 10px 24px -10px rgba(122,31,43,.6)}
.su-form h1{font-size:30px;font-weight:700;letter-spacing:-.03em;margin:20px 0 8px}
.su-form p{margin:0;font-size:15px;line-height:1.55;color:#6e6e73}
.su-field{display:flex;align-items:center;gap:14px;width:100%;margin-top:28px;background:#f2f2f7;border-radius:12px;padding:0 16px;height:52px;text-align:left}
.su-field span{font-size:17px;font-weight:500;flex:none}
.su-field input{flex:1;min-width:0;border:0;background:transparent;outline:none;font-size:17px;color:#000;height:100%}
.su-card{position:relative;width:100%;margin-top:22px;height:178px;border-radius:18px;padding:16px 18px;color:#fff;text-align:left;overflow:hidden;
  background:radial-gradient(120% 90% at 100% 0%,rgba(255,255,255,.18),transparent 55%),linear-gradient(150deg,#9b2c3b,#4a1019);box-shadow:0 18px 34px -16px rgba(74,16,25,.7)}
.su-card::after{content:"";position:absolute;right:-40px;bottom:-60px;width:200px;height:200px;border-radius:50%;border:26px solid rgba(255,255,255,.06)}
.sc-top{display:flex;align-items:center;gap:10px}
.sc-top>b{width:30px;height:30px;border-radius:9px;background:rgba(255,255,255,.2);display:grid;place-items:center;font:700 11px 'DM Mono',monospace}
.sc-top span{display:flex;flex-direction:column;line-height:1.2}
.sc-top em{font:500 8.5px 'DM Mono',monospace;letter-spacing:.16em;font-style:normal;opacity:.75}
.sc-top strong{font-size:14px}
.sc-top small{margin-left:auto;font-size:11px;opacity:.7;align-self:flex-start}
.sc-photo{position:absolute;left:18px;top:62px;width:60px;height:74px;border-radius:10px;background:linear-gradient(160deg,rgba(255,255,255,.35),rgba(255,255,255,.1))}
.sc-photo::before{content:"";position:absolute;left:19px;top:14px;width:22px;height:22px;border-radius:50%;background:rgba(255,255,255,.55)}
.sc-photo::after{content:"";position:absolute;left:10px;bottom:0;width:40px;height:24px;border-radius:20px 20px 0 0;background:rgba(255,255,255,.55)}
.sc-info{position:absolute;left:94px;top:72px;display:flex;flex-direction:column}
.sc-info strong{font-size:24px;font-weight:700;letter-spacing:-.02em;max-width:230px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sc-info span{font-size:13px;opacity:.8}
.sc-bar{position:absolute;left:94px;right:18px;bottom:18px;height:16px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.8) 0 2px,transparent 2px 4px,rgba(255,255,255,.8) 4px 5px,transparent 5px 8px);opacity:.55;border-radius:2px}
.su-next{position:absolute;left:28px;right:28px;bottom:52px;height:52px;border-radius:14px;background:var(--blue);color:#fff;font-size:17px;font-weight:600;text-align:center;transition:transform .12s,opacity .12s}
.su-next:active{transform:scale(.97);opacity:.85}

/* 잠금화면 */
#L-lock{touch-action:none;cursor:grab;will-change:transform}
.lockdim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.18),rgba(0,0,0,0) 35%,rgba(0,0,0,.2))}
.lk-top{position:absolute;top:58px;left:0;right:0;display:flex;flex-direction:column;align-items:center;color:#fff;text-shadow:0 1px 10px rgba(0,0,0,.12)}
.lk-lock{width:15px;height:19px;margin-bottom:8px;opacity:.95}
.lk-date{font-size:21px;font-weight:600;opacity:.92}
.lk-time{font-size:108px;font-weight:700;line-height:1;letter-spacing:-.035em;margin-top:2px;font-variant-numeric:tabular-nums}
.lk-notifs{position:absolute;left:10px;right:10px;top:300px;bottom:132px;display:flex;flex-direction:column;justify-content:flex-end;gap:8px;overflow:hidden;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 14%);mask-image:linear-gradient(180deg,transparent,#000 14%)}
.lk-hint{position:absolute;bottom:100px;left:0;right:0;text-align:center;color:rgba(255,255,255,.88);font-size:15px;font-weight:500;opacity:0;transition:opacity .8s;animation:hintFloat 2.4s ease-in-out infinite}
.lk-hint.on{opacity:1}
@keyframes hintFloat{0%,100%{transform:none}50%{transform:translateY(-5px)}}
.lk-btns{position:absolute;bottom:40px;left:46px;right:46px;display:flex;justify-content:space-between}
.lk-b{width:50px;height:50px;border-radius:50%;background:rgba(20,20,30,.3);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);display:grid;place-items:center}
.lk-b svg{width:22px;height:22px;fill:#fff}

/* 알림 카드 */
.nc{display:flex;gap:11px;align-items:center;padding:11px 14px 12px 11px;border-radius:24px;background:rgba(250,250,252,.66);-webkit-backdrop-filter:blur(30px) saturate(1.8);backdrop-filter:blur(30px) saturate(1.8);color:#000;cursor:pointer;flex:none}
.nc .ic{width:38px;height:38px;border-radius:9.5px;flex:none}
.nc-main{flex:1;min-width:0}
.nc-top{display:flex;justify-content:space-between;gap:8px;font-size:15px;line-height:1.3}
.nc-top b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nc-top span{color:rgba(60,60,67,.6);font-size:13.5px;flex:none}
.nc-body{font-size:15px;line-height:1.32;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}
.drop-in{animation:dropIn .7s cubic-bezier(.32,.72,0,1) both}
@keyframes dropIn{from{transform:translateY(28px) scale(.96);opacity:0}to{transform:none;opacity:1}}
#banner{position:absolute;top:56px;left:8px;right:8px;z-index:96;touch-action:none;will-change:transform,opacity;transform-origin:50% 0}
#banner .nc{background:rgba(250,250,252,.9);box-shadow:0 10px 30px rgba(0,0,0,.18)}

/* 암호 */
#L-pass{color:#fff}
.pdim{position:absolute;inset:0;background:rgba(10,10,20,.38)}
.pass-top{position:absolute;top:118px;left:0;right:0;display:flex;flex-direction:column;align-items:center;gap:18px}
.pass-top h2{margin:0;font-size:21px;font-weight:500}
.dots{display:flex;gap:24px}
.dots i{width:13px;height:13px;border-radius:50%;border:1.5px solid #fff;transition:background .1s}
.dots i.f{background:#fff}
.dots.shake{animation:shake .5s cubic-bezier(.36,.07,.19,.97)}
@keyframes shake{10%,90%{transform:translateX(-3px)}20%,80%{transform:translateX(6px)}30%,50%,70%{transform:translateX(-14px)}40%,60%{transform:translateX(14px)}}
.pass-hint{font-size:14px;opacity:.78;min-height:18px}
.keypad{position:absolute;top:296px;left:50%;width:296px;margin-left:-148px;display:grid;grid-template-columns:repeat(3,80px);justify-content:space-between;row-gap:16px}
.key{width:80px;height:80px;border-radius:50%;background:rgba(255,255,255,.17);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:background .35s}
.key:active,.key.hit{background:rgba(255,255,255,.5);transition:none}
.key b{font-size:36px;font-weight:400;line-height:1}
.key small{font-size:10px;letter-spacing:.2em;font-weight:600;margin-top:1px}
.key.zero{grid-column:2}
.pass-foot{position:absolute;bottom:56px;left:52px;right:52px;display:flex;justify-content:space-between}
.pass-foot button{color:#fff;font-size:17px;padding:6px}

/* 홈 */
#homeContent{position:absolute;inset:0;transform-origin:50% 50%;will-change:transform,opacity}
.hg{position:absolute;top:70px;left:20px;right:20px;display:grid;grid-template-columns:repeat(4,1fr);row-gap:26px;justify-items:center}
.app{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;width:76px}
.app .ic{width:64px;height:64px;border-radius:15px;transition:filter .15s}
.app:active .ic{filter:brightness(.7)}
.app .lbl{font-size:12px;font-weight:500;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.35);white-space:nowrap}
.badge{position:absolute;top:-6px;right:0;min-width:24px;height:24px;border-radius:12px;background:var(--red);color:#fff;font-size:14px;font-weight:600;font-style:normal;display:flex;align-items:center;justify-content:center;padding:0 7px}
.widget{grid-column:1/-1;width:100%;height:170px;border-radius:24px;padding:16px 18px;color:#fff;text-align:left;
  background:rgba(70,45,90,.24);-webkit-backdrop-filter:blur(28px) saturate(1.5);backdrop-filter:blur(28px) saturate(1.5);box-shadow:inset 0 0 0 .5px rgba(255,255,255,.35);display:flex;flex-direction:column;transition:transform .2s;text-shadow:0 1px 4px rgba(60,30,60,.25)}
.widget:active{transform:scale(.97)}
.wg-top{display:flex;align-items:center;gap:9px}
.wg-emb{width:28px;height:28px;border-radius:8px;background:linear-gradient(150deg,#9b2c3b,#4a1019);display:grid;place-items:center;font:700 10px 'DM Mono',monospace;text-shadow:none}
.wg-top b{font-size:15px;font-weight:700}
.wg-top em{margin-left:auto;font-style:normal;font-weight:700;font-size:13px;background:rgba(255,255,255,.24);border-radius:999px;padding:3px 10px}
.wg-date{font-size:27px;font-weight:700;letter-spacing:-.03em;margin-top:14px}
.wg-list{display:flex;flex-direction:column;gap:3px;margin-top:auto;font-size:13.5px;font-weight:500}
.wg-list span{display:flex;align-items:center;gap:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wg-list i{width:4px;height:14px;border-radius:2px;background:#ffcf7a;flex:none}
.widget.couple{align-items:center;justify-content:center;gap:4px;background:rgba(255,120,150,.22)}
.wc-top{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.wc-av{width:48px!important;height:48px!important;border-radius:50%!important}
.wc-heart{color:#ff6b8b;font-size:22px;animation:beat 1.4s ease-in-out infinite;text-shadow:none}
@keyframes beat{0%,100%{transform:scale(1)}15%{transform:scale(1.25)}30%{transform:scale(1)}}
.widget.couple b{font-size:15px}
.widget.couple em{font-style:normal;font-size:30px;font-weight:800;letter-spacing:-.02em}
.search-pill{position:absolute;bottom:130px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:5px;padding:6px 13px;border-radius:999px;background:rgba(255,255,255,.22);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:#fff;font-size:13px;font-weight:600}
.search-pill svg{width:12px;height:12px;fill:#fff}
.dock{position:absolute;left:12px;right:12px;bottom:14px;height:96px;border-radius:38px;background:rgba(255,255,255,.24);-webkit-backdrop-filter:blur(30px) saturate(1.6);backdrop-filter:blur(30px) saturate(1.6);display:grid;grid-template-columns:repeat(4,1fr);align-items:center;justify-items:center;box-shadow:inset 0 0 0 .5px rgba(255,255,255,.35)}
.dock .lbl{display:none}

/* 아이콘 */
.ic{position:relative;display:block;overflow:hidden}
.ic svg{position:absolute;inset:0;width:100%;height:100%}
.ic-kakao{background:var(--kakao)}
.ic-insta{background:radial-gradient(circle at 30% 107%,#fdf497 0%,#fdf497 5%,#fd5949 45%,#d6249f 60%,#285aeb 90%)}
.ic-phone{background:linear-gradient(180deg,#6af97f,#0bc13a)}
.ic-music{background:linear-gradient(180deg,#fd6079,#f9203a)}
.ic-seohatime{background:linear-gradient(160deg,#a63445,#5a1420)}
.ic-photos,.ic-notes,.ic-calendar{background:#fff}
.ic-notes::before{content:"";position:absolute;left:0;right:0;top:0;height:27%;background:linear-gradient(180deg,#ffd84a,#fcc419)}
.ic-calendar{display:flex!important;flex-direction:column;align-items:center}
.ic-calendar em{font-style:normal;color:var(--red);font-size:10.5px;font-weight:600;margin-top:7px;line-height:1}
.ic-calendar strong{font-size:33px;font-weight:300;line-height:1.05;color:#000;letter-spacing:-.03em}
.nc .ic-calendar em{font-size:6px;margin-top:4px}.nc .ic-calendar strong{font-size:19px}

/* 프로필 사진 (카톡 스타일 둥근 사각) */
.kav{position:relative;width:46px;height:46px;border-radius:17px;flex:none;display:grid;place-items:center;overflow:hidden;color:#fff}
.kav b{font-size:14px;font-weight:700;letter-spacing:-.02em;text-shadow:0 1px 2px rgba(0,0,0,.15)}
.kav.me{background:linear-gradient(150deg,#8fa4c4,#41506b)}
.kav.grid{background:#fff;display:grid;grid-template-columns:1fr 1fr;gap:2px;padding:0}
.kav.grid i{display:block;border-radius:7px}
.kav.big{width:56px;height:56px;border-radius:21px}
.kav.xl{width:96px;height:96px;border-radius:36px}.kav.xl b{font-size:26px}
.kav.anon{background:#e5e5ea;color:#8e8e93;width:36px;height:36px;border-radius:12px}

/* 사진 그림 (모양별) */
.art{position:relative;overflow:hidden;width:100%;height:100%}
.art i{position:absolute;display:block}
.m-sun i:nth-child(1){width:34%;height:34%;border-radius:50%;left:58%;top:14%;background:rgba(255,255,255,.65);box-shadow:0 0 30px rgba(255,255,255,.5)}
.m-sun i:nth-child(2),.m-moon i:nth-child(2),.m-blossom i:nth-child(2),.m-umbrella i:nth-child(2){left:-10%;right:-10%;bottom:-20%;height:52%;border-radius:50% 50% 0 0;background:rgba(0,0,0,.16)}
.m-moon i:nth-child(1){width:26%;height:26%;border-radius:50%;left:62%;top:16%;box-shadow:-9px 6px 0 0 rgba(255,255,255,.85)}
.m-moon i:nth-child(3){inset:0;background:radial-gradient(1.5px 1.5px at 20% 30%,#fff,transparent),radial-gradient(1.5px 1.5px at 40% 12%,#fff,transparent),radial-gradient(1px 1px at 75% 50%,#fff,transparent),radial-gradient(1px 1px at 12% 60%,#fff,transparent)}
.m-blossom i:nth-child(1){inset:0;background:radial-gradient(circle at 20% 20%,rgba(255,255,255,.75) 0 6%,transparent 7%),radial-gradient(circle at 70% 30%,rgba(255,255,255,.6) 0 9%,transparent 10%),radial-gradient(circle at 45% 55%,rgba(255,255,255,.5) 0 5%,transparent 6%),radial-gradient(circle at 85% 70%,rgba(255,255,255,.7) 0 4%,transparent 5%),radial-gradient(circle at 15% 75%,rgba(255,255,255,.5) 0 7%,transparent 8%)}
.m-blossom i:nth-child(3){width:22%;height:40%;left:39%;bottom:8%;border-radius:40% 40% 10% 10%;background:rgba(60,30,40,.35)}
.m-stage i:nth-child(1){left:0;right:0;bottom:0;height:30%;background:rgba(0,0,0,.35)}
.m-stage i:nth-child(2){left:20%;top:0;width:24%;height:80%;background:linear-gradient(180deg,rgba(255,255,255,.45),transparent);clip-path:polygon(40% 0,60% 0,100% 100%,0 100%)}
.m-stage i:nth-child(3){left:56%;top:0;width:24%;height:80%;background:linear-gradient(180deg,rgba(255,240,200,.4),transparent);clip-path:polygon(40% 0,60% 0,100% 100%,0 100%)}
.m-fire i:nth-child(1){width:40%;height:40%;left:12%;top:12%;border-radius:50%;background:repeating-conic-gradient(rgba(255,210,120,.9) 0 4deg,transparent 4deg 20deg);-webkit-mask:radial-gradient(circle,transparent 18%,#000 20%,#000 60%,transparent 70%);mask:radial-gradient(circle,transparent 18%,#000 20%,#000 60%,transparent 70%)}
.m-fire i:nth-child(2){width:32%;height:32%;left:58%;top:22%;border-radius:50%;background:repeating-conic-gradient(rgba(255,140,190,.9) 0 4deg,transparent 4deg 22deg);-webkit-mask:radial-gradient(circle,transparent 18%,#000 20%,#000 60%,transparent 70%);mask:radial-gradient(circle,transparent 18%,#000 20%,#000 60%,transparent 70%)}
.m-fire i:nth-child(3){left:0;right:0;bottom:0;height:22%;background:linear-gradient(180deg,transparent,rgba(0,0,0,.45))}
.m-window i:nth-child(1){left:14%;top:12%;width:72%;height:58%;border:5px solid rgba(255,255,255,.55);border-radius:4px;background:linear-gradient(90deg,transparent 48%,rgba(255,255,255,.55) 48% 52%,transparent 52%),linear-gradient(180deg,rgba(255,255,255,.25),transparent)}
.m-window i:nth-child(2){left:0;right:0;bottom:0;height:22%;background:rgba(80,50,30,.3)}
.m-rain i:nth-child(1),.m-umbrella i:nth-child(3){inset:0;background:repeating-linear-gradient(105deg,transparent 0 12px,rgba(255,255,255,.35) 12px 13px)}
.m-umbrella i:nth-child(1){width:56%;height:28%;left:22%;top:26%;border-radius:100% 100% 0 0;background:rgba(30,40,60,.6)}
.m-book i:nth-child(1){left:20%;bottom:14%;width:60%;height:12%;background:rgba(255,255,255,.7);border-radius:2px;box-shadow:0 -14px 0 rgba(255,230,200,.55),0 -28px 0 rgba(255,255,255,.45)}
.m-book i:nth-child(2){left:0;right:0;bottom:0;height:16%;background:rgba(0,0,0,.2)}

/* 앱 창 */
#appWin{position:absolute;left:0;top:0;width:402px;height:100%;transform-origin:0 0;z-index:5;overflow:hidden;background:#fff;will-change:transform,clip-path}
#nav{position:absolute;inset:0}
#ghost{position:absolute;left:0;top:0;transform-origin:0 0;z-index:6;pointer-events:none;will-change:transform,opacity}
#ghost>*{margin:0!important}
#ghost .lbl,#ghost .badge{display:none}

/* 화면 쌓기 (iOS 내비게이션) */
.page{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--bg);will-change:transform}
.page+.page{box-shadow:-12px 0 28px rgba(0,0,0,.14)}
.page.white{background:#fff}
.shade{position:absolute;inset:0;background:#000;opacity:0;pointer-events:none;z-index:40}
.edge{position:absolute;left:0;top:54px;bottom:0;width:24px;z-index:35;touch-action:none}
.nb{flex:none;height:98px;padding:54px 8px 0;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;position:relative;z-index:10;transition:background-color .2s,box-shadow .2s}
.nb-title{font-size:17px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:230px;transition:opacity .18s;text-align:center}
.nb.has-large .nb-title{opacity:0}
.page.scrolled .nb{background:rgba(249,249,249,.88);-webkit-backdrop-filter:blur(20px) saturate(1.8);backdrop-filter:blur(20px) saturate(1.8);box-shadow:0 .5px 0 var(--sep)}
.page.white.scrolled .nb{background:rgba(255,255,255,.9)}
.page.scrolled .nb.has-large .nb-title{opacity:1}
.back{justify-self:start;display:flex;align-items:center;gap:4px;color:var(--tint);font-size:17px;padding:8px 10px 8px 4px;white-space:nowrap}
.back svg{width:12px;height:21px;flex:none}
.back:active,.nb-right:active{opacity:.4}
.nb-right{justify-self:end;color:var(--tint);padding:0 10px;font-size:17px;display:flex;gap:18px;align-items:center}
.nb-right svg{width:22px;height:22px}
.sc{flex:1;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.sc::-webkit-scrollbar{display:none}
.large{font-size:34px;font-weight:700;letter-spacing:-.025em;margin:0;padding:0 20px 8px;line-height:1.2}
.pad{height:40px}
.empty{text-align:center;color:var(--gray);font-size:15px;padding:40px 20px}
.tint-yellow{--tint:#d4a300}.tint-red{--tint:#ff3b30}.tint-pink{--tint:#fa2d48}
.sec{font-size:13px;color:var(--gray);padding:18px 32px 7px}
.group{margin:0 16px;background:#fff;border-radius:12px;overflow:hidden}
.row{display:flex;align-items:center;gap:12px;width:100%;padding:11px 16px;position:relative;background:#fff;text-align:left;font-size:16px}
.row+.row::before{content:"";position:absolute;top:0;left:16px;right:0;height:.5px;background:var(--sep)}
button.row:active{background:#e5e5ea}
.chev{width:8px;height:14px;fill:none;stroke:#c4c4c7;stroke-width:2;flex:none}
.seg-wrap{padding:0 16px 12px}
.seg{display:flex;background:var(--fill);border-radius:9px;padding:2px}
.seg button{flex:1;font-size:13px;font-weight:600;padding:6px 10px;border-radius:7px;text-align:center;transition:background .2s,box-shadow .2s}
.seg button.on{background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.12)}

/* 카카오톡 */
.kakao .kh{flex:none;padding:54px 18px 8px;display:flex;align-items:center;justify-content:space-between;background:#fff}
.kh h1{margin:0;font-size:23px;font-weight:700;letter-spacing:-.02em}
.kh-ic{display:flex;gap:18px}
.kh-ic svg{width:24px;height:24px}
.k-ad{margin:4px 16px 8px;padding:12px 14px;border-radius:12px;background:#f6f6f6;font-size:13px;color:#555}
.k-ad b{color:var(--seoha)}
.krow-item{display:flex;align-items:center;gap:12px;width:100%;padding:8px 18px;text-align:left}
.krow-item:active{background:#f2f2f2}
.k-mid{flex:1;min-width:0}
.k-mid b{display:flex;align-items:baseline;gap:5px;font-size:16px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.k-mid b em{font-style:normal;font-weight:500;color:#9a9a9a;font-size:14px}
.k-mid p{margin:2px 0 0;font-size:14px;color:#7d7d7d;line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}
.k-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none;align-self:flex-start;padding-top:4px}
.k-side time{font-size:12px;color:#9a9a9a}
.k-badge{min-width:20px;height:20px;border-radius:10px;background:#fa4a3d;color:#fff;font-size:11.5px;font-weight:700;display:grid;place-items:center;padding:0 6px}
.k-sec{font-size:12.5px;color:#888;padding:14px 18px 4px;margin:0;border-top:.5px solid #eee}
.me-row{padding:12px 18px 14px}
.ktabs{flex:none;height:84px;display:flex;justify-content:space-around;padding-top:12px;background:#fff;box-shadow:0 -.5px 0 #e8e8e8}
.ktabs>*{width:44px;height:30px;display:grid;place-items:center;color:#c2c2c2}
.ktabs svg{width:28px;height:28px;fill:currentColor}
.ktabs button.on{color:#191919}
.kroom{background:var(--kakao-bg)}
.kr-nb{background:var(--kakao-bg);grid-template-columns:auto 1fr auto;--tint:#222}
.ktitle{display:flex;align-items:baseline;gap:6px;font-size:17px;padding-left:2px;min-width:0}
.ktitle b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ktitle em{font-style:normal;color:#5c6b7a;font-size:15px}
.kmsgs{padding:4px 12px 14px}
.kdate{display:flex;justify-content:center;margin:16px 0 8px}
.kdate span{font-size:12px;color:#fff;background:rgba(40,60,85,.24);border-radius:999px;padding:4px 13px}
.km{display:flex;gap:8px;margin-top:4px;align-items:flex-start}
.km.first{margin-top:12px}
.km.me{justify-content:flex-end}
.km .kav{width:38px;height:38px;border-radius:15px}
.km .kav b{font-size:11px}
.kavbtn{flex:none;display:block}
.avsp{width:38px;flex:none}
.kcol{min-width:0;max-width:76%;display:flex;flex-direction:column}
.kname{font-size:13px;color:#46525f;margin:0 0 4px 2px;font-weight:500}
.krow{display:flex;align-items:flex-end;gap:5px}
.km.me .krow{justify-content:flex-end}
.kb{position:relative;background:#fff;color:#191919;border-radius:4px 15px 15px 15px;padding:7px 11px;font-size:15.5px;line-height:1.42;overflow-wrap:anywhere;white-space:pre-wrap;min-width:0}
.km:not(.first) .kb{border-radius:15px}
.km.me .kb{background:var(--kakao);border-radius:15px 4px 15px 15px}
.km.me:not(.first) .kb{border-radius:15px}
.kb.photo{padding:0;overflow:hidden;width:190px;height:190px;border-radius:14px!important;display:block}
.kb.photo .art{width:100%;height:100%}
.kb.photo.tall{height:253px}
.kmeta{display:flex;flex-direction:column;align-items:flex-end;font-size:10.5px;color:#556270;flex:none;line-height:1.3;white-space:nowrap}
.km:not(.me) .kmeta{align-items:flex-start}
.kmeta i{font-style:normal;color:#e6c200;font-weight:700;font-size:11px}
.kb.typing{display:flex;gap:4px;padding:12px 13px}
.kb.typing i{width:6px;height:6px;border-radius:50%;background:#9aa3ad;animation:tdot 1.1s infinite}
.kb.typing i:nth-child(2){animation-delay:.18s}.kb.typing i:nth-child(3){animation-delay:.36s}
@keyframes tdot{0%,60%,100%{transform:none;opacity:.5}30%{transform:translateY(-3px);opacity:1}}
.km.pop{animation:kpop .32s cubic-bezier(.32,.72,0,1) both}
@keyframes kpop{from{transform:translateY(6px);opacity:0}to{transform:none;opacity:1}}
.kchoice{background:#fff;border-radius:18px 18px 0 0;padding:12px 12px 6px;box-shadow:0 -6px 20px rgba(0,0,0,.08);animation:sheetUp .45s cubic-bezier(.2,1,.3,1) both}
@keyframes sheetUp{from{transform:translateY(100%)}to{transform:none}}
.kchoice p{margin:0 4px 8px;font-size:12.5px;font-weight:600;color:#8a8a8f;display:flex;align-items:center;gap:6px}
.kchoice p::before{content:"";width:6px;height:6px;border-radius:50%;background:#fa4a3d;animation:beat 1.4s infinite}
.kchoice button{display:block;width:100%;text-align:left;padding:12px 14px;margin-bottom:6px;border-radius:12px;background:#f5f5f5;font-size:15px;line-height:1.4;transition:background .15s,transform .15s}
.kchoice button:active{background:#fff3a6;transform:scale(.98)}
.kinput{flex:none;display:flex;align-items:center;gap:8px;padding:8px 10px 32px;background:#fff}
.kplus{width:32px;height:32px;flex:none;color:#8a8a8a;font-size:26px;font-weight:300;line-height:1;display:grid;place-items:center}
.kinput input{flex:1;min-width:0;border:0;border-radius:20px;background:#f3f3f3;padding:9px 14px;font-size:16px;color:#111;outline:none}
.kinput input:disabled{color:#aaa}
.ksend{width:36px;height:36px;border-radius:50%;background:#ececec;flex:none;display:grid;place-items:center;color:#b5b5b5;transition:background .15s,color .15s}
.ksend svg{width:18px;height:18px}
.kinput.has .ksend{background:var(--kakao);color:#3a2e00}
.kprof{background:#3a3f48;color:#fff}
.kprof .nb{position:absolute;left:0;right:0;top:0;--tint:#fff}
.kp-bg{position:absolute;inset:0;opacity:.9}
.kp-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.05),rgba(0,0,0,.45))}
.kprof .sc{position:relative;display:flex;flex-direction:column}
.kp-main{position:relative;margin-top:auto;display:flex;flex-direction:column;align-items:center;gap:8px;padding-bottom:30px}
.kp-main>b{font-size:21px;font-weight:600;margin-top:6px}
.kp-main p{margin:0;font-size:14px;opacity:.85;text-align:center;padding:0 30px}
.kp-chip{margin-top:6px;font-size:12.5px;font-weight:600;background:rgba(255,255,255,.2);border-radius:999px;padding:5px 12px}
.kp-btns{position:relative;display:flex;justify-content:center;gap:40px;padding:22px 0 60px;border-top:.5px solid rgba(255,255,255,.25)}
.kp-btns>*{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:12.5px}
.kp-btns i{font-style:normal;font-size:24px}

/* 인스타그램 */
.insta .ih{flex:none;padding:54px 16px 6px;display:flex;align-items:center;justify-content:space-between;background:#fff}
.ilogo{font-family:'Grand Hotel',cursive;font-size:32px;font-weight:400;letter-spacing:0}
.ih div{display:flex;gap:20px}
.ih svg{width:25px;height:25px}
.istories{display:flex;gap:14px;padding:8px 14px 12px;overflow-x:auto;scrollbar-width:none;border-bottom:.5px solid #efefef}
.istories::-webkit-scrollbar{display:none}
.ist{display:flex;flex-direction:column;align-items:center;gap:5px;width:70px;flex:none;font-size:11.5px;color:#262626}
.ist>span:last-child{max-width:70px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ist .ring{padding:2.5px;border-radius:50%;background:conic-gradient(from 210deg,#feda75,#fa7e1e,#d62976,#962fbf,#4f5bd5,#feda75)}
.ist.seen .ring{background:#dbdbdb}
.iav{border-radius:50%!important}
.iav.lg{width:62px;height:62px;border:2.5px solid #fff}
.iav.sm{width:32px;height:32px}.iav.sm b{font-size:10px}
.iav.xs{width:26px;height:26px}.iav.xs b{font-size:9px}
.iav.xl{width:84px;height:84px}
.ipost{padding-bottom:10px}
.ipost header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px}
.ip-who{display:flex;align-items:center;gap:9px;font-size:14px}
.ip-who b{font-weight:600}
.ip-img{position:relative;aspect-ratio:1;cursor:pointer}
/* 영상(릴스)은 실제 인스타 피드처럼 세로 4:5로 보여줘요 */
.ip-img.reel{aspect-ratio:4/5;overflow:hidden;background:#000}
.ip-img.reel video{object-fit:cover}
.bigheart{position:absolute;left:50%;top:50%;font-style:normal;font-size:96px;color:#fff;transform:translate(-50%,-50%) scale(0);opacity:0;text-shadow:0 4px 30px rgba(0,0,0,.25);pointer-events:none}
.bigheart.pop{animation:bigheart .9s cubic-bezier(.2,1.3,.3,1) both}
@keyframes bigheart{0%{transform:translate(-50%,-50%) scale(0);opacity:0}15%{transform:translate(-50%,-50%) scale(1.15);opacity:1}30%{transform:translate(-50%,-50%) scale(.95)}45%{transform:translate(-50%,-50%) scale(1)}80%{opacity:1}100%{transform:translate(-50%,-60%) scale(1);opacity:0}}
.ip-act{display:flex;align-items:center;gap:16px;padding:9px 12px 4px}
.ip-act svg{width:25px;height:25px}
.ip-act span{flex:1}
.ip-act button.liked{color:#ff3040}
.ip-act button.liked svg{fill:#ff3040;stroke:#ff3040;animation:likepop .4s cubic-bezier(.2,1.6,.4,1)}
@keyframes likepop{0%{transform:scale(1)}40%{transform:scale(1.3)}100%{transform:scale(1)}}
.ip-likes{font-size:14px;font-weight:600;padding:0 12px}
.ip-cap{font-size:14px;padding:3px 12px 0;line-height:1.4}
.ip-cap b{font-weight:600}
.ip-time{font-size:11.5px;color:#8e8e8e;padding:5px 12px 0}
.itabs{flex:none;height:84px;display:flex;justify-content:space-around;align-items:flex-start;padding-top:12px;background:#fff;box-shadow:0 -.5px 0 #efefef}
.itabs>*{width:44px;display:grid;place-items:center;color:#262626}
.itabs svg{width:26px;height:26px}
.ipr-top{display:flex;align-items:center;gap:24px;padding:6px 18px 12px}
.ipr-cnt{flex:1;display:flex;justify-content:space-around;text-align:center}
.ipr-cnt span{display:flex;flex-direction:column;font-size:13px}
.ipr-cnt b{font-size:17px;font-weight:700}
.ipr-bio{padding:0 18px 12px;font-size:14px}
.ipr-bio p{margin:2px 0 0;line-height:1.45}
.ipr-btns{display:flex;gap:6px;padding:0 18px 14px}
.ipr-btns>*{flex:1;text-align:center;background:#efefef;border-radius:8px;padding:7px 0;font-size:14px;font-weight:600}
.ipr-btns .blue{background:#0095f6;color:#fff}
.ipr-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px}
.ipr-grid button{aspect-ratio:1}
.istory{background:#000;color:#fff}
.istory .sc{position:relative}
.is-bar{position:absolute;top:56px;left:10px;right:10px;height:2.5px;border-radius:2px;background:rgba(255,255,255,.35);overflow:hidden;z-index:2}
.is-bar i{display:block;height:100%;width:100%;background:#fff;transform-origin:0 50%;animation:storybar 5.2s linear both}
@keyframes storybar{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.is-who{position:absolute;top:68px;left:12px;right:12px;display:flex;align-items:center;gap:8px;font-size:14px;z-index:2}
.is-who span{opacity:.7;font-size:13px}
.is-who button{margin-left:auto;font-size:22px;color:#fff;padding:4px 6px}
.is-art{position:absolute!important;inset:0;border-radius:0}
.is-cap{position:absolute;left:0;right:0;bottom:90px;text-align:center;font-size:20px;font-weight:600;text-shadow:0 2px 12px rgba(0,0,0,.4);white-space:pre-line}

/* 사진 */
.ph-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px}
.ph{aspect-ratio:1;position:relative;overflow:hidden;display:block}
.ph:active{opacity:.8}
.ph .fav{position:absolute;left:6px;bottom:4px;font-style:normal;color:#fff;font-size:13px;text-shadow:0 1px 3px rgba(0,0,0,.4)}
.ph-count{text-align:center;padding:16px 0 30px;font-size:15px;font-weight:600}
.viewer{background:#000;color:#fff}
.viewer .nb{background:rgba(0,0,0,.5);--tint:#fff}
.vcap{display:block;text-align:center;line-height:1.25}
.vcap b{display:block;font-size:16px;font-weight:600}
.vcap small{font-size:12px;opacity:.7}
.vwrap{flex:1;position:relative;overflow:hidden;touch-action:none}
.strip{position:absolute;inset:0;display:flex;will-change:transform}
.strip .slide{flex:none;width:402px;height:100%;display:grid;place-items:center}
.v-art{width:402px!important;height:502px!important}
.v-art.real{height:536px!important}
.vfoot{flex:none;height:96px;display:flex;justify-content:space-between;align-items:flex-start;padding:12px 24px 0;font-size:13px;font-variant-numeric:tabular-nums}
.vfoot span{opacity:.7;padding-top:8px}
.vfav{font-size:26px;color:#fff;line-height:1}
.vfav.on{color:#ff375f}

/* 서하타임 */
.stime{background:#f4f4f6}
.st-h{flex:none;padding:54px 16px 10px;background:#fff;display:flex;flex-direction:column;gap:10px;box-shadow:0 .5px 0 var(--sep)}
.st-h small{display:block;font-size:12px;color:var(--seoha);font-weight:700}
.st-h b{font-size:24px;font-weight:800;letter-spacing:-.03em}
.st-h .seg button.on{color:var(--seoha)}
.st-list{display:flex;flex-direction:column;gap:1px;margin-top:10px}
.st-post{display:block;width:100%;background:#fff;padding:14px 18px;text-align:left}
.st-post:active{background:#f0f0f2}
.st-post b{display:block;font-size:15.5px;font-weight:600}
.st-post p{margin:4px 0 8px;font-size:14px;color:#666;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:pre-line}
.st-post span{display:flex;gap:10px;font-size:12px;color:#999}
.st-post em,.st-meta em{font-style:normal}
.st-post em:first-child{color:#e0485b}
.st-detail{background:#fff;padding:6px 20px 18px}
.st-anon{display:flex;align-items:center;gap:10px}
.st-anon b{display:block;font-size:14px}
.st-anon small{font-size:12px;color:#999}
.st-detail h2{font-size:19px;margin:16px 0 8px}
.st-detail p{font-size:15.5px;line-height:1.6;margin:0 0 14px}
.st-meta{display:flex;gap:12px;font-size:13px;color:#e0485b}
.st-cmts{background:#fff;margin-top:8px}
.st-cmt{padding:12px 20px;border-top:.5px solid #eee}
.st-cmt b{font-size:13px}
.st-cmt p{margin:3px 0 0;font-size:14.5px}
.tt{margin:12px;background:#fff;border-radius:14px;overflow:hidden;padding-bottom:8px}
.tt-head{display:grid;grid-template-columns:28px repeat(5,1fr);font-size:12px;color:#888;text-align:center;padding:10px 0 6px}
.tt-body{position:relative;margin-right:4px}
.tt-hours span{position:absolute;left:0;width:28px;text-align:center;font-size:11px;color:#aaa;border-top:.5px solid #eee;padding-top:2px}
.tt-hours span::after{content:"";position:absolute;left:28px;width:340px;top:-.5px;border-top:.5px solid #f2f2f2}
.tt-cls{position:absolute;width:calc((100% - 28px) / 5 - 3px);border-radius:8px;padding:6px 6px;color:#fff;overflow:hidden;font-size:11px;line-height:1.25}
.tt-cls b{display:block;font-size:11.5px;font-weight:700;color:rgba(0,0,0,.75)}
.tt-cls small{display:block;color:rgba(0,0,0,.55);margin-top:2px}
.tt-cls em{display:block;font-style:normal;margin-top:3px;color:#fff;font-weight:700;background:rgba(0,0,0,.2);border-radius:4px;padding:1px 4px;width:max-content;max-width:100%}
.fest-hero{margin:12px 16px 0;border-radius:18px;padding:22px 20px;color:#fff;background:radial-gradient(80% 90% at 85% 10%,rgba(255,207,122,.6),transparent 60%),linear-gradient(150deg,#2a1a4a,#7a1f2b);display:flex;flex-direction:column;gap:4px}
.fest-hero small{font:500 10px 'DM Mono',monospace;letter-spacing:.18em;opacity:.8}
.fest-hero b{font-size:28px;font-weight:800;letter-spacing:-.03em}
.fest-hero span{font-size:14px;opacity:.85}
.fest-hero em{align-self:flex-start;margin-top:10px;font-style:normal;font-weight:700;background:rgba(255,255,255,.2);border-radius:999px;padding:4px 12px;font-size:13px}
.fest-row{align-items:flex-start}
.fest-row time{font-size:12.5px;color:var(--seoha);font-weight:700;width:52px;flex:none;line-height:1.3}
.fest-row span{font-size:15px}

/* 메모 */
.note-row b{display:block;font-size:17px;font-weight:600}
.note-row small{display:block;font-size:15px;color:var(--gray);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.note-row small time{color:#000;margin-right:6px}
.note-row .mid{flex:1;min-width:0}
.note{padding:4px 22px 40px}
.note time{display:block;text-align:center;font-size:13px;color:var(--gray);margin-bottom:16px}
.note h2{font-size:26px;font-weight:700;margin:0 0 12px;letter-spacing:-.03em}
.note p{font-size:17px;line-height:1.7;margin:0;white-space:pre-wrap}

/* 캘린더 */
.cal-head{display:flex;align-items:center;justify-content:space-between;padding:0 16px 10px}
.cal-head h2{margin:0;font-size:28px;font-weight:700;letter-spacing:-.02em}
.cal-head button{width:34px;height:34px;border-radius:50%;background:#f2f2f7;color:var(--red);font-size:22px;text-align:center;margin-left:6px}
.cal-dow{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:12px;color:var(--gray);padding:0 8px 6px}
.cal-dow span:first-child{color:var(--red)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);padding:0 8px;background:#fff}
.cd{display:flex;flex-direction:column;align-items:center;gap:3px;height:50px;padding-top:5px;border-top:.5px solid var(--sep)}
.cd span{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-size:18px}
.cd.sun span{color:var(--red)}
.cd.sel span{background:#000;color:#fff;font-weight:600}
.cd.today span{color:var(--red);font-weight:600}
.cd.today.sel span{background:var(--red);color:#fff}
.cd i{width:5px;height:5px;border-radius:50%;background:#c7c7cc}
.cd.blank{pointer-events:none}
.cal-list{padding:16px 16px 40px;background:#fff}
.cal-day{font-size:15px;font-weight:600;color:var(--gray);margin:0 4px 10px}
.cal-ev{display:flex;gap:12px;align-items:stretch;padding:10px 0;border-bottom:.5px solid var(--sep)}
.cal-ev i{width:4px;border-radius:2px;flex:none}
.cal-ev b{display:block;font-size:16.5px;font-weight:600}
.cal-ev small{font-size:14px;color:var(--gray)}
.cal-none{color:var(--gray);font-size:16px;padding:6px 4px}

/* 음악 */
.mu-art{width:250px;height:250px;margin:6px auto 18px;border-radius:12px;box-shadow:0 16px 34px -12px rgba(60,20,40,.55);display:grid;place-items:center;color:#fff;font-size:22px;font-weight:800;text-align:center;line-height:1.2;padding:24px}
.mu-title{text-align:center;font-size:22px;font-weight:700;padding:0 24px}
.mu-owner{text-align:center;font-size:20px;color:var(--tint);margin-top:2px}
.mu-btns{display:flex;gap:12px;padding:18px 20px 10px}
.mu-btns button{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;background:#f0f0f3;border-radius:12px;padding:13px 0;color:var(--tint);font-weight:600;font-size:17px}
.mu-btns svg{width:17px;height:17px;fill:currentColor}
.mu-row{display:flex;align-items:center;gap:14px;width:100%;padding:0 0 0 20px;text-align:left}
.mu-row:active{background:#e5e5ea}
.mu-row .n{width:18px;color:var(--gray);font-size:15px;text-align:center;flex:none}
.mu-row .mid{flex:1;min-width:0;padding:11px 20px 11px 0;border-bottom:.5px solid var(--sep)}
.mu-row b{display:block;font-size:17px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mu-row small{display:block;font-size:14px;color:var(--gray)}
.mu-row.on b{color:var(--tint);font-weight:600}
.eq{display:none;gap:2px;align-items:flex-end;height:14px;width:18px;flex:none;justify-content:center}
.eq i{width:3px;background:var(--tint);border-radius:1px;animation:eq .9s ease-in-out infinite}
.eq i:nth-child(2){animation-delay:.2s}.eq i:nth-child(3){animation-delay:.4s}
@keyframes eq{0%,100%{height:4px}50%{height:14px}}
.mu-row.on .n{display:none}.mu-row.on .eq{display:flex}
.mini{flex:none;margin:0 8px 30px;height:64px;border-radius:16px;background:rgba(246,246,248,.96);box-shadow:0 4px 18px rgba(0,0,0,.12);display:flex;align-items:center;gap:12px;padding:0 16px 0 8px}
.mini-art{width:48px!important;height:48px!important;border-radius:8px;flex:none}
.mini .mid{flex:1;min-width:0}
.mini b{display:block;font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini small{font-size:13px;color:var(--gray)}
.mini svg{width:24px;height:24px;fill:#000}

/* 전화 */
.c-row .kav{width:40px;height:40px;border-radius:50%}
.c-row .kav b{font-size:12px}
.c-row .mid{flex:1;min-width:0}
.c-row b{display:block;font-size:17px;font-weight:600}
.c-row.miss b{color:var(--red)}
.c-row small{font-size:14px;color:var(--gray)}
.c-row time{font-size:15px;color:var(--gray)}
.c-row .info{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--blue);color:var(--blue);font-size:13px;font-weight:700;display:grid;place-items:center;font-style:italic;font-family:Georgia,serif}
.nb .seg{min-width:170px}
.tabbar{flex:none;height:84px;display:flex;justify-content:space-around;padding-top:8px;background:rgba(249,249,249,.94);box-shadow:0 -.5px 0 var(--sep);font-size:10px;font-weight:500;color:var(--gray2)}
.tabbar span{display:flex;flex-direction:column;align-items:center;gap:3px;width:64px}
.tabbar i{width:26px;height:24px;border-radius:7px;background:currentColor;opacity:.75}
.tabbar span.on{color:var(--blue)}
#L-call{color:#fff;z-index:60}
.calldim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(25,25,35,.55),rgba(15,15,20,.75))}
.call-top{position:absolute;top:110px;left:0;right:0;display:flex;flex-direction:column;align-items:center}
.call-av{width:90px!important;height:90px!important;border-radius:50%!important}
.call-av b{font-size:26px!important}
.call-top .who{font-size:34px;font-weight:500;margin-top:12px}
.call-top .st{font-size:17px;opacity:.75;margin-top:2px;font-variant-numeric:tabular-nums}
.call-sub{position:absolute;top:310px;left:28px;right:28px;height:200px;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;gap:8px;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 30%);mask-image:linear-gradient(180deg,transparent,#000 30%)}
.call-sub p{margin:0;font-size:17px;line-height:1.4;animation:kpop .4s ease both}
.call-sub p.me{text-align:right;opacity:.6}
.call-ins{position:absolute;bottom:90px;left:58px;right:58px;display:flex;justify-content:space-between}
.call-ins>div{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:14.5px}
.call-in,.call-end{width:76px;height:76px;border-radius:50%;display:grid;place-items:center;color:#fff}
.call-in svg,.call-end svg{width:34px;height:34px}
.call-in.no,.call-end{background:var(--red)}
.call-in.no svg,.call-end svg{transform:rotate(135deg)}
.call-in.yes{background:var(--green);animation:ringpulse 1.4s ease-in-out infinite}
@keyframes ringpulse{0%,100%{box-shadow:0 0 0 0 rgba(52,199,89,.55)}50%{box-shadow:0 0 0 16px rgba(52,199,89,0)}}
.call-grid{position:absolute;top:540px;left:44px;right:44px;display:grid;grid-template-columns:repeat(3,1fr);row-gap:22px;justify-items:center}
.cg{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:13px;opacity:.9}
.cg i{width:68px;height:68px;border-radius:50%;background:rgba(255,255,255,.18)}
.call-end{position:absolute;bottom:70px;left:50%;margin-left:-38px}

/* 날짜 카드 · 엔딩 */
#dateCard{position:absolute;inset:0;z-index:95;display:grid;place-items:center;background:rgba(10,8,20,.55);-webkit-backdrop-filter:blur(24px) saturate(1.3);backdrop-filter:blur(24px) saturate(1.3);color:#fff;pointer-events:none}
.dc-in{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}
.dc-in small{font:500 12px 'DM Mono',monospace;letter-spacing:.2em;opacity:.7}
.dc-in b{font-size:30px;font-weight:700;letter-spacing:-.03em}
.dc-in span{font-size:16px;opacity:.85;padding:5px 14px;border-radius:999px;background:rgba(255,255,255,.14);margin-top:6px}
#endSheet{position:absolute;inset:0;z-index:96;display:flex;align-items:flex-end}
.es-card{width:100%;background:#fff;border-radius:30px 30px 0 0;padding:26px 22px 40px;will-change:transform}
.es-k{font:500 11px 'DM Mono',monospace;letter-spacing:.18em;color:var(--seoha)}
.es-card h2{margin:6px 0 4px;font-size:28px;letter-spacing:-.03em}
.es-card>p{margin:0;color:#6e6e73;font-size:15px;line-height:1.5}
.es-stat{display:flex;gap:10px;margin:16px 0}
.es-stat span{flex:1;background:#f5f5f7;border-radius:12px;padding:10px 12px;font-size:12px;color:#8e8e93;display:flex;flex-direction:column}
.es-stat b{font-size:18px;color:#000;margin-top:2px}
.es-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.es-grid div{border-radius:10px;background:#f2f2f4;padding:8px 6px;font-size:11px;line-height:1.3;color:#aaa;min-height:54px}
.es-grid em{display:block;font:500 9px 'DM Mono',monospace;font-style:normal;margin-bottom:2px}
.es-grid .on{background:#fbeef0;color:var(--seoha);font-weight:600}
.es-grid .now{box-shadow:inset 0 0 0 2px var(--seoha)}
.es-btns{display:flex;gap:8px;margin-top:18px}
.es-btns button{flex:1;height:50px;border-radius:14px;background:#f2f2f7;font-weight:600;text-align:center}
.es-btns button:last-child{background:var(--seoha);color:#fff}

/* ✨ 추천 답장 (입력창 안 작은 버튼 — 대화를 가리지 않게) */
.ksug{flex:none;display:flex;align-items:center;gap:3px;height:32px;font-size:12.5px;font-weight:600;color:#5a4a00;padding:0 10px;border-radius:16px;background:#fff6c2;transition:transform .15s,background .15s}
.ksug i{font-style:normal;font-size:12px}
.ksug:active{background:var(--kakao);transform:scale(.94)}
.set-note{font-size:12.5px;color:var(--gray);text-align:center;padding:12px 28px 0;margin:0;line-height:1.5}

/* 음악: 앨범 커버 · 미니 플레이어 · 지금 재생 중 */
.mu-art.grid{display:grid;grid-template-columns:1fr 1fr;padding:0;gap:0}
.mu-art.grid i{display:block}
.mu-cv{width:46px;height:46px;border-radius:6px;flex:none;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.mu-row{gap:12px;padding-left:16px}
.mu-row .eq{order:3;margin-right:18px}
.mu-row.on .eq{display:flex}
.mu-row.on:not(.playing) .eq i{animation-play-state:paused}
.mini{position:relative;overflow:hidden;gap:6px;padding:0 10px 0 8px}
.mini-tap{flex:1;min-width:0;display:flex;align-items:center;gap:12px;text-align:left}
.mini-tap .mid{flex:1;min-width:0}
.mini-btn{width:36px;height:36px;display:grid;place-items:center;flex:none}
.mini-btn svg{width:24px;height:24px;fill:#000}
.mu-prog{position:absolute;left:0;right:0;bottom:0;height:3px;background:rgba(0,0,0,.06);display:block;overflow:hidden}
.mu-prog i{display:block;height:100%;width:0;background:var(--tint,#fa2d48);transition:width .25s linear}
.nowplay{background:#1c1c1e;color:#fff}
.nowplay .nb{position:absolute;left:0;right:0;top:0;--tint:#fff;z-index:12}
.nowplay .sc{position:relative;overflow:hidden}
.np-bg{position:absolute;inset:-40px;filter:blur(40px) saturate(1.4) brightness(.7);transform:scale(1.2)}
.np-in{position:relative;display:flex;flex-direction:column;align-items:center;padding:120px 32px 40px;text-align:center}
.np-cover{width:300px;height:300px;border-radius:14px;box-shadow:0 24px 50px -16px rgba(0,0,0,.6);transform:scale(.86);transition:transform .6s cubic-bezier(.32,.72,0,1)}
.np-cover.on{transform:none}
.np-title{margin-top:36px;font-size:22px;font-weight:700;align-self:flex-start;text-align:left}
.np-by{font-size:19px;opacity:.7;align-self:flex-start;margin-top:2px}
.np-prog{position:relative;height:6px;border-radius:3px;background:rgba(255,255,255,.25);margin-top:26px;width:100%}
.np-prog i{background:#fff;border-radius:3px}
.np-time{align-self:stretch;text-align:left;font-size:12px;opacity:.6;margin-top:8px;font-variant-numeric:tabular-nums}
.np-ctl{display:flex;align-items:center;justify-content:center;gap:44px;margin-top:24px}
.np-ctl button{color:#fff}
.np-ctl svg{width:38px;height:38px;fill:#fff}
.np-ctl .np-pp svg{width:54px;height:54px}
.np-note{font-size:12px;opacity:.5;margin-top:26px}
#lkMedia{position:absolute;left:10px;right:10px;top:236px;z-index:3;display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:22px;background:rgba(250,250,252,.66);-webkit-backdrop-filter:blur(30px) saturate(1.8);backdrop-filter:blur(30px) saturate(1.8);color:#000}
#lkMedia .lm-cv{width:48px;height:48px;border-radius:9px;flex:none}
#lkMedia .lm-mid{flex:1;min-width:0;position:relative;padding-bottom:8px}
#lkMedia .lm-mid b{display:block;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#lkMedia .lm-mid small{font-size:13px;color:#555}
#lkMedia .mu-prog{bottom:0;border-radius:2px;background:rgba(0,0,0,.12)}
#lkMedia .mu-prog i{background:#000}
#lkMedia button svg{width:26px;height:26px;fill:#000}
.kb.song{display:flex;align-items:center;gap:10px;padding:10px;border-radius:14px!important;width:230px;text-align:left;background:#fff}
.ks-cv{width:54px;height:54px;border-radius:8px;flex:none}
.ks-mid{min-width:0;display:flex;flex-direction:column}
.ks-mid b{font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ks-mid small{font-size:12.5px;color:#777}
.ks-mid em{font-style:normal;font-size:12px;color:#fa2d48;font-weight:600;margin-top:3px}

/* 인스타 동영상 */
.ip-art{object-fit:cover;display:block}
video.art{width:100%;height:100%;background:#000}
.ip-reel{position:absolute;right:10px;top:10px;font-style:normal;color:#fff;font-size:14px;text-shadow:0 1px 4px rgba(0,0,0,.4)}
.is-art{object-fit:cover}

/* 메시지 (문자) */
.ic-messages{background:linear-gradient(180deg,#6af97f,#0bc13a)}
.ic-settings{background:linear-gradient(180deg,#a3a7af,#6c717a)}
.sav{width:44px;height:44px;border-radius:50%;flex:none;display:grid;place-items:center;color:#fff;font-size:15px;font-weight:600;background:linear-gradient(180deg,#a5abb8,#848a96)}
.mrow{display:flex;align-items:center;gap:10px;width:100%;padding-left:6px;text-align:left}
.mrow:active{background:#e5e5ea}
.mrow .dot{width:10px;height:10px;border-radius:50%;flex:none}
.mrow .dot.on{background:var(--blue)}
.mmid{flex:1;min-width:0;padding:10px 16px 11px 0;border-bottom:.5px solid var(--sep)}
.mtop{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.mtop b{font-size:17px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mtop span{display:flex;align-items:center;gap:6px;font-size:15px;color:var(--gray);flex:none}
.mmid p{margin:2px 0 0;font-size:15px;line-height:1.3;color:var(--gray);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.search{margin:2px 16px 12px;height:36px;border-radius:10px;background:var(--fill);color:var(--gray);display:flex;align-items:center;gap:6px;padding:0 9px;font-size:17px}
.search svg{width:16px;height:16px}
.snb{height:auto;padding:52px 8px 8px;background:rgba(246,246,246,.92);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 .5px 0 var(--sep)}
.snb .back{align-self:start;margin-top:6px}
.tw{display:flex;flex-direction:column;align-items:center;gap:4px}
.tw b{font-size:12px;font-weight:500}
.tdiv{text-align:center;font-size:11.5px;color:var(--gray);margin:16px 0 6px}
.sbubbles{display:flex;flex-direction:column;padding:6px 16px 14px;gap:4px}
.sb{align-self:flex-start;max-width:76%;background:#e9e9eb;border-radius:18px;padding:8px 13px;font-size:16px;line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere}
.sb.me{align-self:flex-end;background:#34c759;color:#fff}
.sinput{background:#fff}

/* 설정 */
.settings{background:#f2f2f7}
.set-rel{margin:0 16px;background:#fff;border-radius:16px;padding:18px 18px 20px}
.set-rel>div{display:flex;align-items:center;gap:10px}
.set-rel .rh{color:#ff3b5c;font-size:22px}
.set-rel b{font-size:20px;font-weight:700;letter-spacing:-.02em}
.set-rel em{margin-left:auto;font-style:normal;color:var(--gray);font-size:16px;font-variant-numeric:tabular-nums}
.set-rel>i{display:block;height:8px;border-radius:4px;background:#eceef1;margin-top:14px;overflow:hidden}
.set-rel>i b{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#ff6b81,#e0384f);transition:width .6s cubic-bezier(.2,.8,.2,1)}
.set-form .row{gap:12px}
.set-form .row span{flex:none;width:118px;font-size:16px}
.set-form input{flex:1;min-width:0;border:0;outline:0;font-size:16px;text-align:right;color:var(--gray);background:transparent}
.set-form input:focus{color:#000}
.set-save{justify-content:center;color:var(--blue);font-weight:600}
.set-row{justify-content:space-between}
.set-row .seg{width:200px;flex:none}
.set-row .seg button{padding:5px 4px;font-size:12.5px}
.set-val{font-style:normal;color:var(--gray)}
.set-ends .row em{font:500 12px 'DM Mono',monospace;color:var(--seoha);width:22px;font-style:normal}
.set-ends .row span{flex:1}
.set-ends .locked{color:#c4c4c7}
.set-ends .locked em{color:#c4c4c7}
.set-reset{margin-top:22px}
.set-reset .row{justify-content:center;color:var(--red)}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* 인스타 스토리: 여러 장 · 탭으로 넘기기 */
.is-bars{position:absolute;top:56px;left:10px;right:10px;display:flex;gap:4px;z-index:2}
.is-bars span{flex:1;height:2.5px;border-radius:2px;background:rgba(255,255,255,.35);overflow:hidden}
.is-bars i{display:block;height:100%;width:100%;background:#fff;transform-origin:0 50%;transform:scaleX(0)}
.is-stage{position:absolute;inset:0}
.is-tap{position:absolute;top:110px;bottom:0;z-index:1;background:none}
.is-tap.prev{left:0;width:35%}.is-tap.next{right:0;width:65%}
.is-when{opacity:.7;font-size:13px}

/* 전화 앱: 탭 · 연락처 · 키패드 */
.tabbar button{display:flex;flex-direction:column;align-items:center;gap:3px;width:64px;font-size:10px;font-weight:500;color:var(--gray2)}
.tabbar button i{width:26px;height:24px;border-radius:7px;background:currentColor;opacity:.75}
.tabbar button.on{color:var(--blue)}
.c-row{width:100%;text-align:left}
.c-out{font-style:normal;margin-right:3px;color:var(--gray)}
.ct-row{width:100%;text-align:left}
.ct-call{margin-left:auto;width:34px;height:34px;border-radius:50%;background:#e9f9ee;display:grid;place-items:center;flex:none}
.ct-call svg{width:17px;height:17px;fill:var(--green)}
.kp{display:flex;flex-direction:column;align-items:center;padding-top:40px}
.kp-num{height:56px;font-size:36px;font-weight:400;letter-spacing:.02em;font-variant-numeric:tabular-nums}
.kp-grid{display:grid;grid-template-columns:repeat(3,78px);gap:16px 26px;margin-top:20px}
.kp-key{width:78px;height:78px;border-radius:50%;background:#e5e5ea;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#000}
.kp-key:active{background:#bcbcc0}
.kp-key b{font-size:34px;font-weight:400;line-height:1}
.kp-key small{font-size:10px;font-weight:600;letter-spacing:.15em;margin-top:2px;min-height:12px}
.kp-bottom{display:grid;grid-template-columns:repeat(3,78px);gap:26px;margin-top:16px;align-items:center;justify-items:center}
.kp-call{width:78px;height:78px;border-radius:50%;background:var(--green);display:grid;place-items:center}
.kp-call svg{width:34px;height:34px;fill:#fff}
.kp-del{font-size:26px;color:#8e8e93}
.kp-btns button{display:flex;flex-direction:column;align-items:center;gap:6px;color:#fff;font-size:12.5px}

/* 캘린더: 종류별 점 · 오늘/추가 · 다가오는 일정 · 상세 · 새 이벤트 */
.cal-top{display:flex;justify-content:space-between;align-items:center;padding:6px 16px 4px}
.cal-today{color:var(--red);font-size:17px}
.cal-add{color:var(--red);font-size:30px;font-weight:300;line-height:1;width:34px;height:34px}
.cd em{display:flex;gap:2px;height:5px}
.cd em i{width:5px;height:5px;border-radius:50%}
.cd.sat span{color:#8e8e93}
.cal-ev{width:100%;text-align:left;color:inherit}
.cal-ev>div{flex:1;min-width:0}
.cal-day.up{margin-top:24px}
.dday{align-self:center;font-size:13px;font-weight:700;color:var(--red);background:#ffeceb;border-radius:8px;padding:3px 8px;flex:none}
.ce{padding:8px 16px 40px}
.ce h2{font-size:26px;font-weight:700;margin:6px 0 4px}
.ce-place{margin:0;color:var(--gray);font-size:16px}
.ce-when{font-size:16px;line-height:1.5;margin:14px 0 22px}
.ce .group .row{display:flex;justify-content:space-between;padding:12px 16px}
.ce-cal{display:flex;align-items:center;gap:6px;color:var(--gray)}
.ce-cal i{width:10px;height:10px;border-radius:50%}
.ce-memo{white-space:pre-line;color:#333}
.ce-del{display:block;width:100%;margin-top:24px;padding:14px;border-radius:12px;background:#fff;color:var(--red);font-size:17px}
.caladd{background:#f2f2f7}
.ca-form{padding:10px 16px 40px;display:flex;flex-direction:column;gap:18px}
.ca-form .group{background:#fff;border-radius:12px;overflow:hidden}
.ca-form input,.ca-form textarea{width:100%;border:0;outline:0;font:inherit;font-size:17px;padding:12px 16px;background:transparent;resize:none}
.ca-form .group>input+input{border-top:.5px solid var(--sep)}
.ca-form label.row{display:flex;align-items:center;justify-content:space-between;padding:0 0 0 16px;font-size:17px}
.ca-form label.row+label.row{border-top:.5px solid var(--sep)}
.ca-form label input{width:auto;text-align:right;color:var(--red)}
.ca-save{padding:14px;border-radius:12px;background:var(--red);color:#fff;font-size:17px;font-weight:600}
.ct-row .mid,.c-row .mid{display:flex;flex-direction:column;align-items:flex-start;flex:1;min-width:0}
.ct-row .mid b{font-size:17px;font-weight:600}
.ct-row .mid small,.c-row .mid small{font-size:13px;color:var(--gray)}
/* 처음 설정: 성 · 이름 두 칸 */
.su-fields{display:flex;gap:10px;width:100%;margin-top:28px}
.su-fields .su-field{margin-top:0;width:auto;min-width:0}
.su-fields .su-field:first-child{flex:0 0 34%}
.su-fields .su-field:last-child{flex:1}
/* 메모 폴더 · 음악 보관함 */
.nf-h{margin:18px 20px 6px;font-size:20px;font-weight:700}
.nf-row,.ml-row{width:100%;text-align:left;display:flex;align-items:center;gap:12px}
.nf-ic{font-size:20px}
.nf-row em{font-style:normal;color:var(--gray);margin-left:auto}
.nf-row .chev,.ml-row .chev{color:#c7c7cc;font-style:normal;font-size:20px;margin-left:8px}
.ml-row .chev{margin-left:auto}
.ml-row b{color:var(--tint,#fa2d48);font-weight:400;font-size:20px}
.ml-card{display:flex;flex-direction:column;align-items:flex-start;gap:2px;margin:4px 20px;width:170px;text-align:left}
.ml-card .mu-art{width:170px;height:170px;border-radius:10px;margin:0 0 6px;font-size:14px}
.ml-card b{font-size:14px;font-weight:500}
.ml-card small{font-size:13px;color:var(--gray)}
/* 통화 중 버튼: iOS처럼 아이콘 + 반투명 원, 소리 끔·스피커는 켜면 흰 원 */
.call-grid{top:auto;bottom:196px}
.cg{color:#fff;background:none}
.cg i{display:grid;place-items:center;width:72px;height:72px;background:rgba(255,255,255,.2);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);transition:background .2s,color .2s}
.cg i svg{width:30px;height:30px;fill:currentColor}
.cg.on i{background:#fff;color:#1c1c1e}
.cg:active i{background:rgba(255,255,255,.4)}
.call-end{bottom:64px}
/* 옆으로 미는 손가락은 뒤로가기 제스처로 (세로 스크롤은 그대로) */
.page .sc{touch-action:pan-y}
/* 통화 중 대사: 버튼과 겹치지 않게 위쪽에, 자막처럼 */
.call-sub{top:236px;height:220px;left:24px;right:24px;gap:6px;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 28px);mask-image:linear-gradient(180deg,transparent 0,#000 28px)}
.call-sub p{align-self:flex-start;max-width:82%;padding:7px 12px;border-radius:14px;background:rgba(0,0,0,.28);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);font-size:15.5px;line-height:1.35}
.call-sub p.me{align-self:flex-end;text-align:right;opacity:1;background:rgba(255,255,255,.16);color:rgba(255,255,255,.85)}

/* 카톡: 음성 메시지 · 송금 · 이모티콘 */
.kb.voice{display:flex;align-items:center;gap:8px;min-width:150px;padding:9px 12px!important;text-align:left}
.vo-play{width:24px;height:24px;border-radius:50%;background:#3c1e1e;color:#fff;font-style:normal;font-size:10px;display:grid;place-items:center;flex:none}
.vo-wave{display:flex;align-items:center;gap:2px;height:20px;flex:1}
.vo-wave b{width:2.5px;border-radius:2px;background:rgba(0,0,0,.35);height:30%}
.vo-wave b:nth-child(3n){height:70%}.vo-wave b:nth-child(4n+1){height:50%}.vo-wave b:nth-child(5n){height:90%}
.kb.voice.on .vo-wave b{background:#3c1e1e;animation:vowave .5s ease-in-out infinite alternate}
.kb.voice.on .vo-wave b:nth-child(2n){animation-delay:.15s}
@keyframes vowave{to{transform:scaleY(.4)}}
.kb.voice em{font-style:normal;font-size:12px;color:#555;font-variant-numeric:tabular-nums}
.kb.pay{width:220px;padding:0!important;overflow:hidden;background:#fff;border-radius:14px!important}
.pay-top{display:flex;align-items:center;gap:10px;padding:14px 14px 10px;background:#ffeb33}
.pay-top b{width:34px;height:34px;border-radius:50%;background:#3c1e1e;color:#ffeb33;display:grid;place-items:center;font-size:16px}
.pay-top small{display:block;font-size:12px;color:#5a4a00}
.pay-top strong{font-size:18px}
.kb.pay p{margin:0;padding:10px 14px 0;font-size:13.5px;color:#333}
.pay-btn{display:block;margin:10px 14px 4px;width:calc(100% - 28px);padding:9px;border-radius:9px;background:#f2f2f2;font-size:14px;font-weight:600;color:#000}
.pay-btn.done{color:#999}
.pay-foot{display:block;padding:0 14px 10px;font-size:11px;font-weight:700;color:#bbb}
.kb.emo{background:none!important;box-shadow:none!important;font-size:68px;line-height:1.1;padding:2px 0!important}

/* 사진 앨범 */
.al-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 14px;padding:8px 16px 40px}
.al{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;color:inherit}
.al-cover{width:100%!important;aspect-ratio:1;height:auto!important;border-radius:10px!important;margin-bottom:6px}
.al-cover.empty{background:#e5e5ea}
.al b{font-size:15px;font-weight:500}.al small{font-size:14px;color:var(--gray)}

/* 네이버 */
.naver{background:#fff}
.nv-top{padding:58px 16px 14px;background:#fff;display:flex;flex-direction:column;gap:12px;border-bottom:.5px solid #eee}
.nv-top.small{flex-direction:row;align-items:center;gap:8px}
.nv-logo{font-size:26px;font-weight:900;color:#03c75a;letter-spacing:-.02em}
.nv-bar{display:flex;align-items:center;gap:8px;height:48px;border:2px solid #03c75a;border-radius:24px;padding:0 8px 0 18px;flex:1}
.nv-bar input{flex:1;border:0;outline:0;font-size:16px;background:transparent;min-width:0}
.nv-bar button svg,.nv-bar svg{width:22px;height:22px;fill:#03c75a;stroke:#03c75a}
.nv-bar.ro span{font-size:16px;font-weight:600}
.nv-back svg{width:22px;height:22px}
.nv-sec{padding:14px 16px 40px}
.nv-h{font-size:14px;font-weight:700;color:#333;margin:4px 0 8px}
.nv-row{display:flex;align-items:center;gap:10px;width:100%;padding:11px 2px;border-bottom:.5px solid #f0f0f0;text-align:left;font-size:15.5px;color:#222}
.nv-row i{font-style:normal;font-size:14px;opacity:.6}
.nv-tabs{display:flex;gap:18px;padding:12px 16px;font-size:15px;color:#666;border-bottom:.5px solid #eee;overflow:hidden;white-space:nowrap}
.nv-tabs b{color:#03c75a}
.nv-res{padding:6px 16px 40px;background:#f5f6f7}
.nv-res article{background:#fff;border-radius:12px;padding:14px 16px;margin:10px 0}
.nv-res small{font-size:12px;color:#03c75a;font-weight:700}
.nv-res h3{margin:4px 0 6px;font-size:16.5px;color:#1a0dab}
.nv-res p{margin:0;font-size:14px;color:#444;line-height:1.5}
.ic-naver{background:#03c75a}

/* 카메라 */
.camera{background:#000;color:#fff}
.camera .sc{position:relative;overflow:hidden}
.cam-view{position:absolute;left:0;right:0;top:110px;bottom:220px;filter:saturate(1.05)}
.cam-flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}
.cam-flash.go{animation:camflash .35s ease-out}
@keyframes camflash{0%{opacity:.9}100%{opacity:0}}
.cam-modes{position:absolute;left:0;right:0;bottom:170px;display:flex;justify-content:center;gap:18px;font-size:13px;letter-spacing:.04em;color:rgba(255,255,255,.7)}
.cam-modes b{color:#ffd60a;font-weight:600}
.cam-bar{position:absolute;left:0;right:0;bottom:60px;display:flex;align-items:center;justify-content:space-around}
.cam-thumb{width:48px;height:48px;border-radius:8px;background:#222;display:block}
.cam-shutter{width:76px;height:76px;border-radius:50%;background:#fff;box-shadow:0 0 0 4px #000,0 0 0 7px #fff}
.cam-shutter:active{transform:scale(.92)}
.cam-flip{width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.15);display:grid;place-items:center;font-size:22px}
.ic-camera{background:linear-gradient(180deg,#e5e5ea,#a8a8ad)}

/* 인스타 DM */
.ih-dm{position:relative;display:inline-flex}
.dm-dot{position:absolute;top:-2px;right:-3px;width:9px;height:9px;border-radius:50%;background:#ff3040;border:2px solid #fff}
.dm-list{padding:6px 0 40px}
.dm-row{display:flex;align-items:center;gap:12px;width:100%;padding:9px 16px;text-align:left}
.dm-row .mid{display:flex;flex-direction:column;min-width:0}
.dm-row b{font-size:15px;font-weight:500}.dm-row small{font-size:14px;color:#737373;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dm-msgs{display:flex;flex-direction:column;gap:6px;padding:16px 14px 30px}
.dm-m{align-self:flex-start;max-width:72%}
.dm-m.me{align-self:flex-end}
.dm-m p{margin:0;padding:9px 14px;border-radius:20px;background:#efefef;font-size:15px}
.dm-m.me p{background:#3797f0;color:#fff}
.dm-post{width:190px;border-radius:16px;overflow:hidden}
.dm-art{width:190px!important;height:240px!important;border-radius:0!important}
.dm-input{flex:none;margin:6px 12px 30px;height:44px;border-radius:22px;border:1px solid #dbdbdb;display:flex;align-items:center;padding:0 16px;color:#8e8e8e;font-size:15px}

/* 메모 체크리스트 */
.note .chk{display:flex;align-items:center;gap:10px;width:100%;padding:6px 0;text-align:left;font-size:17px;color:inherit}
.note .chk i{width:22px;height:22px;border-radius:50%;border:1.5px solid #c7c7cc;flex:none}
.note .chk.on i{background:#e0a800;border-color:#e0a800;box-shadow:inset 0 0 0 4px #fff}
.note .chk.on{color:#8e8e93;text-decoration:line-through}
.note p{margin:4px 0}

/* 잠금화면 위젯 (시계 아래) */
#lkW{display:flex;gap:10px;justify-content:center;margin-top:10px}
.lw{min-width:120px;max-width:170px;padding:7px 12px;border-radius:16px;background:rgba(255,255,255,.18);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);color:#fff;text-align:left;line-height:1.2}
.lw small{display:block;font-size:11px;font-weight:600;opacity:.8}
.lw b{display:block;font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lw.round{min-width:0;width:58px;height:58px;padding:0;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.lw.round small{font-size:10px}.lw.round b{font-size:13px}
/* 사진 배경화면일 땐 아이콘 이름이 잘 보이게 살짝 어둡게 */
#L-home.photo-wall .wall::after,#L-lock .wall::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.18),rgba(0,0,0,.05) 40%,rgba(0,0,0,.25))}

/* 보낼 말 고르기: 보기 → 자판이 저절로 쳐지고 → 보내기는 직접 */
.cmp{flex:none;background:#fff}
.kfield{flex:1;min-width:0;min-height:38px;max-height:98px;overflow-y:auto;border-radius:19px;background:#f3f3f3;padding:8px 14px;display:block;text-align:left;font-size:16px;line-height:1.38;color:#111;white-space:pre-wrap;overflow-wrap:anywhere;word-break:keep-all}
.kf-ph{color:#9a9a9a}
.kf-text{white-space:pre-wrap}
.kf-caret{display:inline-block;width:2px;height:19px;vertical-align:-4px;background:#3478f6;margin-left:1px;animation:caret 1s steps(1) infinite}
@keyframes caret{50%{opacity:0}}
.kinput.scripted.has .ksend{animation:sendready 1.2s ease-in-out infinite}
@keyframes sendready{50%{transform:scale(1.12)}}
.sc-chips{display:flex;flex-direction:column;gap:7px;padding:10px 12px 2px;background:#fff}
.sc-chip{width:100%;text-align:left;padding:11px 14px;border-radius:14px;background:#fffbe0;border:1px solid #f1df6b;font-size:15px;color:#2a2400;line-height:1.35;animation:kpop .35s cubic-bezier(.32,.72,0,1) both}
.sc-chip:nth-child(2){animation-delay:.06s}.sc-chip:nth-child(3){animation-delay:.12s}.sc-chip:nth-child(4){animation-delay:.18s}
.sc-chip:active{transform:scale(.98);background:#ffe812}
.sc-redo{display:flex;justify-content:flex-end;padding:8px 12px 0;background:#fff}
.sc-redo button{padding:6px 12px;border-radius:999px;background:#f2f2f2;font-size:13px;color:#555;animation:kpop .3s cubic-bezier(.32,.72,0,1) both}
.sc-redo button:active{transform:scale(.96);background:#e6e6e6}
.kinput.scripted{padding-bottom:32px;align-items:flex-end}
.cmp .kinput.scripted:has(+.kbd){padding-bottom:8px}
.kinput input:disabled{background:#f3f3f3;color:#aaa}
.kbd{background:#d2d5db;padding:7px 3px 34px;display:flex;flex-direction:column;gap:9px;animation:sheetUp .28s cubic-bezier(.32,.72,0,1) both}
.kbr{display:flex;gap:5px;justify-content:center}
.kbr.r1{padding:0 18px}
.kk{flex:1;max-width:36px;height:42px;border-radius:6px;background:#fff;box-shadow:0 1px 0 #898a8d;display:grid;place-items:center;font-size:19px;color:#000;transition:transform .08s,background .08s}
.kk.fn{max-width:44px;background:#adb1b9;font-size:15px}
.kbr.r3 .kk.fn{max-width:52px}
.kk.sp{max-width:none;flex:5;font-size:14px;background:#fff}
.kk.hit{background:#8e94a0;color:#fff;transform:translateY(-3px) scale(1.12)}

/* 폰 테두리 기본: 작은 화면에선 바깥 여백·안내 문구 없이 폰을 최대한 크게 */
#stage{padding-bottom:0}
html.tight #stage{padding:0}
html.tight .instruction{display:none}

/* 통화 화면: 화면 높이가 달라도(폰 꽉 찬 화면) 자막이 버튼과 겹치지 않게 세로로 차곡차곡
   위: 사진·이름 / 가운데: 자막(남는 공간만큼, 넘치면 위가 흐려지며 최근 말만) / 아래: 버튼
   간격은 통화 화면 높이(cqh) 기준이라 짧은 화면에선 알아서 좁아져요 */
#L-call:not([hidden]){display:flex;flex-direction:column;align-items:stretch;container-type:size}
#L-call>.call-top,#L-call>.call-sub,#L-call>.call-grid,#L-call>.call-end,#L-call>.call-ins{position:relative;top:auto;bottom:auto;left:auto;right:auto;z-index:1}
#L-call>.call-top{flex:none;margin-top:clamp(52px,12.5cqh,110px)}
#L-call>.call-sub{flex:1 1 0;min-height:0;height:auto;margin:clamp(10px,2.5cqh,28px) 24px clamp(8px,1.6cqh,14px)}
#L-call>.call-grid{flex:none;margin:0 44px;row-gap:clamp(10px,2.5cqh,22px)}
#L-call>.call-end{flex:none;margin:clamp(18px,4.5cqh,40px) auto clamp(30px,7cqh,64px)}
#L-call>.call-ins{flex:none;margin:auto 58px clamp(56px,10cqh,90px)}
@container (max-height:780px){
  #L-call .call-av{width:72px!important;height:72px!important}
  #L-call .call-top .who{font-size:28px;margin-top:8px}
  #L-call .cg i{width:62px;height:62px}
}
