/* Diesel — 다크 프리미엄 테마 */
:root{
  color-scheme:dark;
  --bg:#09090b; --surface:#121215; --surface-2:#18181c; --surface-3:#212126; --surface-4:#2a2a30;
  --line:rgba(255,255,255,.07); --line-2:rgba(255,255,255,.11); --line-3:rgba(255,255,255,.18);
  --fg:#f4f4f5; --fg-2:#cfcfd5; --muted:#8c8c96; --faint:#5f5f69;
  --accent:#e5484d; --accent-hi:#f05a5f; --accent-soft:rgba(229,72,77,.14); --accent-line:rgba(229,72,77,.5);
  --ok:#3dd68c; --ok-soft:rgba(61,214,140,.12); --warn:#f1b84a; --warn-soft:rgba(241,184,74,.12);
  --err:#ff6b6f; --err-soft:rgba(255,107,111,.12); --run:#7cb8ff; --run-soft:rgba(124,184,255,.12);
  --r-lg:20px; --r:14px; --r-sm:11px;
  --font:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR",system-ui,sans-serif;
  --ease:cubic-bezier(.2,.8,.2,1);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%;background:var(--bg)}
body{margin:0;min-height:100vh;background:var(--bg);color:var(--fg);font:15px/1.5 var(--font);letter-spacing:-.01em;
  font-feature-settings:"tnum" 1;word-break:keep-all;overflow-wrap:break-word;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-bottom:env(safe-area-inset-bottom)}
body::before{content:'';position:fixed;inset:0 0 auto;height:520px;z-index:-1;pointer-events:none;
  background:radial-gradient(70% 100% at 50% -30%,rgba(229,72,77,.16),transparent 70%)}
button,input,select,textarea{font:inherit;letter-spacing:inherit;color:inherit}
button{-webkit-tap-highlight-color:transparent}
::selection{background:var(--accent-soft)}

/* 아이콘 */
.i{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;display:block}

/* 머리글 */
.top{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:calc(10px + env(safe-area-inset-top)) 12px 10px 16px;background:rgba(9,9,11,.72);
  -webkit-backdrop-filter:saturate(160%) blur(18px);backdrop-filter:saturate(160%) blur(18px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:11px;min-width:0}
.logo-img{width:32px;height:32px;border-radius:9px;display:block;box-shadow:0 0 0 1px var(--line-2)}
.wordmark{margin:0;font-size:15px;font-weight:800;letter-spacing:.24em;text-transform:uppercase;color:var(--fg)}
.top-actions{display:flex;gap:2px;align-items:center}
@media (min-width:760px){.top{padding-left:calc((100% - 720px) / 2 + 18px);padding-right:calc((100% - 720px) / 2 + 10px)}}

/* 아이콘 단추 */
.ib{position:relative;display:inline-grid;place-items:center;width:42px;height:42px;padding:0;border-radius:50%;border:0;background:transparent;
  color:var(--fg-2);cursor:pointer;transition:background .15s,color .15s,transform .12s;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}
.ib:hover{background:var(--surface-3);color:var(--fg)}
.ib:active{transform:scale(.92)}
.ib:focus-visible,.btn:focus-visible,.seg button:focus-visible{outline:2px solid var(--accent-line);outline-offset:2px}
.ib:disabled{opacity:.4;cursor:default;transform:none}
.ib.sm{width:36px;height:36px}.ib.sm .i{width:18px;height:18px}
.ib.xs{width:28px;height:28px}.ib.xs .i{width:15px;height:15px}
.ib.solid{background:var(--surface-3);box-shadow:inset 0 0 0 1px var(--line-2);color:var(--fg)}
.ib.solid:hover{background:var(--surface-4)}
.ib.accent{background:var(--accent);color:#fff}
.ib.accent:hover{background:var(--accent-hi);color:#fff}
.ib.danger:hover{color:var(--err);background:var(--err-soft)}
.ib.tgl{cursor:pointer}
.ib.tgl input{position:absolute;opacity:0;pointer-events:none;width:0;height:0}
.ib.tgl:has(input:checked){background:var(--accent-soft);color:var(--accent-hi)}
.ib.busy .i{opacity:0}
.ib.busy::after,.btn.busy .i{content:''}
.ib.busy::after{position:absolute;width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}

/* 글자 단추 (주요 동작만) */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:46px;padding:0 18px;border-radius:var(--r);border:0;
  background:var(--surface-3);color:var(--fg);font-size:15px;font-weight:600;cursor:pointer;white-space:nowrap;text-decoration:none;
  transition:background .15s,transform .12s,opacity .15s}
.btn:hover{background:var(--surface-4)}
.btn:active{transform:scale(.985)}
.btn:disabled{opacity:.55;cursor:default;transform:none}
.btn.primary{background:var(--accent);color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.18)}
.btn.primary:hover{background:var(--accent-hi)}
.btn.quiet{background:var(--surface-3);box-shadow:inset 0 0 0 1px var(--line-2)}
.btn.ghost{background:transparent;box-shadow:inset 0 0 0 1px var(--line-2)}
.btn.small{height:36px;padding:0 14px;font-size:13px;border-radius:var(--r-sm);gap:6px}
.btn.small .i{width:16px;height:16px}
.btn.lg{width:100%;height:54px;font-size:16px;border-radius:16px;letter-spacing:-.01em}
.btn.busy .i{animation:spin .8s linear infinite}

/* 레이아웃 */
main{max-width:720px;margin:0 auto;padding:8px 16px 40px;display:flex;flex-direction:column;gap:12px}
.row{display:flex;align-items:center;gap:4px}
.grow{flex:1;min-width:0}
.muted{color:var(--muted)}
.small{font-size:12px}

/* 첫 화면: 주소 입력 */
.hero{padding:22px 2px 6px}
.hero-t{margin:0;font-size:24px;line-height:1.25;font-weight:700;letter-spacing:-.03em}
.hero-s{margin:6px 0 16px;color:var(--muted);font-size:14px}
.search{display:flex;align-items:center;gap:2px;height:58px;padding:0 7px 0 16px;background:var(--surface-2);border-radius:18px;
  box-shadow:inset 0 0 0 1px var(--line-2),0 10px 30px -12px rgba(0,0,0,.6);transition:box-shadow .2s}
.search:focus-within{box-shadow:inset 0 0 0 1px var(--accent-line),0 0 0 4px var(--accent-soft)}
.search .lead{color:var(--faint);margin-right:8px}
.search input,.search input[type=text],.search input[type=text]:focus{flex:1;min-width:0;width:auto;height:100%;padding:0;border:0;border-radius:0;outline:0;background:transparent;box-shadow:none;font-size:15px;color:var(--fg)}
.search input::placeholder{color:var(--faint)}
.search .ib.accent{width:44px;height:44px;margin-left:4px}
.search .ib.xs{color:var(--faint)}

/* 검색 결과 */
.sr-list{display:flex;flex-direction:column;margin:0 -8px}
.sr{display:flex;align-items:center;gap:12px;width:100%;padding:8px;border:0;border-radius:14px;background:transparent;color:inherit;text-align:left;cursor:pointer;transition:background .15s}
.sr:hover{background:var(--surface-2)}
.sr.on{background:var(--accent-soft)}
.sr img{width:52px;height:52px;border-radius:10px;object-fit:cover;flex:none;background:var(--surface-3);box-shadow:0 0 0 1px var(--line)}
.sr-b{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.sr-t{font-size:14px;font-weight:600;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}
.sr-m{display:flex;align-items:center;gap:7px;min-width:0;font-size:12px;color:var(--muted)}
.sr-m .badge{flex:none;height:18px;padding:0 7px;font-size:10.5px}
.sr-c{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr > .i{color:var(--faint);width:18px;height:18px}
.sr.on > .i{color:var(--accent-hi)}
.badge.acc{background:var(--accent-soft);color:var(--accent-hi)}
.sr-more{width:100%;margin-top:6px}
#searchCard .empty{padding:18px 10px}

/* 받은 폴더 */
.dir-sum{margin:0 2px}
.dir-list{display:flex;flex-direction:column;margin:0 -6px}
.dir-f{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:12px;transition:background .15s}
.dir-f:hover{background:var(--surface-2)}
.dir-f.on{background:var(--accent-soft)}
.dir-f.on .ib{color:var(--accent-hi)}
.dir-f.new .dir-n b::after{content:'NEW';margin-left:6px;padding:1px 5px;border-radius:5px;background:var(--accent-soft);color:var(--accent-hi);font-size:9.5px;font-weight:800;vertical-align:1px}
.dir-n{flex:1;min-width:0}
.dir-n b{display:block;font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dir-n small{display:block;font-size:11.5px;color:var(--muted);margin-top:1px}
.dir-audio{width:100%;height:42px;flex:none}
.guide{display:flex;gap:12px;align-items:flex-start;padding:14px;border-radius:var(--r);background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line)}
.guide b.gt{display:block;font-size:14px;font-weight:600;color:var(--fg)}
.guide ol{margin:6px 0 0;padding-left:18px;color:var(--fg-2);font-size:13px;line-height:1.75}
.guide ol b{color:var(--fg)}
.guide small{display:block;color:var(--muted);font-size:12px;line-height:1.5;margin-top:6px}
.guide .btn{margin-top:10px}
.dir-fs{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px;padding:14px;border-radius:var(--r);background:var(--accent-soft);box-shadow:inset 0 0 0 1px rgba(229,72,77,.22)}
.dir-fs > div{flex:1;min-width:200px}
.dir-fs b{display:block;font-size:14px}
.dir-fs small{display:block;color:var(--fg-2);font-size:12px;line-height:1.5;margin-top:2px}

/* 카드 */
.card{background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,0) 120px),var(--surface);border-radius:var(--r-lg);padding:16px;
  box-shadow:inset 0 0 0 1px var(--line)}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:-4px -6px 12px 0}
.card-h h3{margin:0;display:flex;align-items:center;gap:9px;font-size:15px;font-weight:700;letter-spacing:-.01em}
.card-h h3 .i{width:18px;height:18px;color:var(--muted)}
.lbl{display:block;font-size:12px;font-weight:600;color:var(--muted);margin:0 0 6px;letter-spacing:0}
.lbl small{font-weight:500;color:var(--faint)}
.hint{color:var(--muted);font-size:12px;line-height:1.5}
.hint:empty{display:none}

/* 입력칸 */
input[type=text],.url-row input,#acCode,#acName{width:100%;height:44px;padding:0 13px;border:0;border-radius:12px;background:var(--bg);color:var(--fg);font-size:15px;outline:none;
  box-shadow:inset 0 0 0 1px var(--line-2);transition:box-shadow .15s}
input[type=text]:focus,.url-row input:focus,#acCode:focus,#acName:focus{box-shadow:inset 0 0 0 1px var(--accent-line),0 0 0 3px var(--accent-soft)}
input::placeholder{color:var(--faint)}
.select{width:100%;height:46px;padding:0 42px 0 14px;border:0;border-radius:12px;background:var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%238c8c96' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 13px center;
  color:var(--fg);font-size:15px;font-weight:600;appearance:none;-webkit-appearance:none;outline:none;box-shadow:inset 0 0 0 1px var(--line-2)}
.select:focus{box-shadow:inset 0 0 0 1px var(--accent-line),0 0 0 3px var(--accent-soft)}
.select:disabled{opacity:.45}
.select option{background:var(--surface-2)}

/* 알림 상자 */
.note{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:12px;padding:12px 14px;border-radius:var(--r);background:var(--surface-2);
  box-shadow:inset 0 0 0 1px var(--line);font-size:13px;line-height:1.55;color:var(--fg-2)}
.note.err{background:var(--err-soft);box-shadow:inset 0 0 0 1px rgba(255,107,111,.22);color:#ffc9ca}
.note.err b{color:#fff}
.note.err small{color:var(--fg-2)}
.banner{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:12px;padding:10px 12px;border-radius:var(--r);
  background:var(--warn-soft);color:#f6d48e;font-size:13px;box-shadow:inset 0 0 0 1px rgba(241,184,74,.22)}

/* 배지 */
.badge{display:inline-flex;align-items:center;gap:5px;height:20px;padding:0 8px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:0;
  background:var(--surface-4);color:var(--fg-2);vertical-align:1px;white-space:nowrap}
.badge.ok{background:var(--ok-soft);color:var(--ok)}
.badge.warn{background:var(--warn-soft);color:var(--warn)}
.badge.err{background:var(--err-soft);color:var(--err)}
.badge.run{background:var(--run-soft);color:var(--run)}
.badge:empty{display:none}
.pill::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor}
.badge.run.pill::before{animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{50%{opacity:.3}}

/* 태그 확인 */
.meta-grid{display:flex;gap:14px;align-items:flex-start}
.cover-box{flex:none;width:116px;display:flex;flex-direction:column;gap:8px}
.cover-box img{width:116px;height:116px;object-fit:cover;border-radius:14px;background:var(--surface-3);display:block;box-shadow:0 0 0 1px var(--line),0 12px 24px -10px rgba(0,0,0,.7)}
.cover-box img.wide{object-fit:contain}
.cover-tools{display:flex;justify-content:space-between;background:var(--surface-2);border-radius:12px;padding:2px;box-shadow:inset 0 0 0 1px var(--line)}
.meta-fields{flex:1;min-width:0;display:flex;flex-direction:column;gap:0}
.meta-fields input{height:40px;font-size:14px;width:100%;flex:none}
.meta-fields .lbl{margin:10px 0 5px}
.meta-fields > div:first-child .lbl{margin-top:0}
.lbl-row{display:flex;align-items:center;justify-content:space-between;margin:4px -4px 0 0}
.lbl-row .lbl{margin:6px 0 3px}
.pair{display:flex;gap:8px}
.yr{width:68px;flex:none}
.url-row{display:flex;align-items:center;gap:4px;margin-top:12px}
.url-row input{flex:1;height:40px;font-size:14px}
#mtNote{margin-top:12px}
.thumbs{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 2px;margin:12px 0 0;scrollbar-width:none}
.thumbs::-webkit-scrollbar{display:none}
.thumbs:empty{display:none}
.thumb{flex:none;position:relative;border:0;border-radius:12px;padding:0;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:10px;color:var(--faint)}
.thumb img{width:60px;height:60px;object-fit:cover;border-radius:10px;background:var(--surface-3);display:block;box-shadow:0 0 0 1px var(--line);transition:box-shadow .15s,opacity .15s;opacity:.72}
.thumb:hover img{opacity:1}
.thumb.on img{opacity:1;box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--accent)}
.thumb.on{color:var(--fg-2)}
.thumb.custom img{object-fit:contain}
.info-line{color:var(--faint);font-size:12px;margin:14px 0 14px;line-height:1.5;word-break:break-all}
.info-line:empty{margin:6px 0}
.playlist{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}
.pl-head{display:flex;align-items:center;justify-content:space-between}
#plList{max-height:260px;overflow:auto;margin-top:8px;border-radius:12px;box-shadow:inset 0 0 0 1px var(--line)}
.pl-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line);font-size:13px;cursor:pointer}
.pl-item:last-child{border-bottom:0}
.pl-item .t{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pl-item .d{color:var(--muted);flex:none}
.chk{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer}
input[type=checkbox]:not(.sw input):not(.tgl input){width:18px;height:18px;margin:0;accent-color:var(--accent);flex:none}

/* 접이식 카드 */
.fold{padding:0}
.fold summary{list-style:none;display:flex;align-items:center;gap:12px;padding:14px 14px 14px 14px;cursor:pointer;border-radius:var(--r-lg)}
.fold summary::-webkit-details-marker{display:none}
.fold summary:hover .tile{background:var(--surface-4)}
.tile{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:var(--surface-3);color:var(--fg-2);flex:none;box-shadow:inset 0 0 0 1px var(--line);transition:background .15s}
.tile .i{width:18px;height:18px}
.tile.accent{background:var(--accent-soft);color:var(--accent-hi)}
.fold-t{font-weight:700;font-size:15px;flex:none}
.fold .sum{flex:1;min-width:0;text-align:right;font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fold .chev{color:var(--faint);width:18px;height:18px;transition:transform .25s var(--ease)}
.fold[open] .chev{transform:rotate(180deg)}
.fold-body{padding:2px 16px 14px;border-top:1px solid var(--line);margin:0 0 0;animation:fadeIn .25s var(--ease)}
.fold-body > .field:first-child,.fold-body > .seg:first-child{margin-top:14px}
.field{margin:14px 0 6px}

/* 분할 선택 */
.seg{display:flex;gap:2px;padding:3px;background:var(--bg);border-radius:13px;box-shadow:inset 0 0 0 1px var(--line)}
.seg button,.seg label{flex:1;min-width:0;height:36px;border:0;border-radius:10px;background:transparent;color:var(--muted);font-weight:600;font-size:13px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:7px;transition:background .15s,color .15s}
.seg button:hover,.seg label:hover{color:var(--fg)}
.seg button.on,.seg label:has(input:checked){background:var(--surface-4);color:var(--fg);box-shadow:0 1px 2px rgba(0,0,0,.5),inset 0 0 0 1px var(--line-2)}
.seg label input{position:absolute;opacity:0;pointer-events:none;width:0;height:0}
.seg label .i{width:16px;height:16px}
.seg label.disabled{opacity:.4;pointer-events:none}
.seg.dim{opacity:.45;pointer-events:none}
.seg.dest{margin-top:14px}
#fsHint{margin:8px 2px 0}

/* 스위치 */
.sw{display:flex;align-items:center;gap:12px;padding:14px 0 4px;cursor:pointer}
.sw + .sw{border-top:1px solid var(--line);margin-top:10px}
.sw-i{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:var(--surface-3);color:var(--muted);flex:none}
.sw-i .i{width:16px;height:16px}
.sw-i.warn{background:var(--warn-soft);color:var(--warn)}
.sw .txt{flex:1;min-width:0}
.sw .txt b{display:block;font-size:14px;font-weight:600}
.sw .txt small{display:block;color:var(--muted);font-size:12px;line-height:1.45;margin-top:2px}
.sw input{appearance:none;-webkit-appearance:none;position:relative;width:46px;height:28px;margin:0;border-radius:999px;background:var(--surface-4);flex:none;cursor:pointer;
  box-shadow:inset 0 0 0 1px var(--line-2);transition:background .2s}
.sw input::after{content:'';position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.45);transition:transform .22s var(--ease)}
.sw input:checked{background:var(--accent);box-shadow:none}
.sw input:checked::after{transform:translateX(18px)}
.fs-box{display:flex;align-items:center;gap:10px;margin-top:12px;padding:6px 12px 6px 6px;border-radius:var(--r);background:var(--bg);box-shadow:inset 0 0 0 1px var(--line)}
.path{font-size:13px;color:var(--fg-2);word-break:break-all;flex:1;min-width:0}

/* 다운로드 목록 */
.jobs{display:flex;flex-direction:column}
.empty{color:var(--faint);text-align:center;padding:22px 10px 14px;font-size:13px}
.job{display:flex;gap:12px;padding:14px 0;border-top:1px solid var(--line)}
.job:first-child{border-top:0;padding-top:4px}
.jthumb{width:60px;height:60px;object-fit:cover;border-radius:12px;background:var(--surface-3);flex:none;box-shadow:0 0 0 1px var(--line)}
.jbody{flex:1;min-width:0}
.jtitle{font-weight:600;font-size:14px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all}
.jmeta{font-size:12px;color:var(--muted);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.jrow{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px;min-height:36px}
.jstage{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}
.jact{display:flex;gap:0;flex:none;margin-right:-6px}
.bar{height:3px;border-radius:999px;background:var(--surface-4);overflow:hidden;margin-top:8px}
.bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),#ff8f92);transition:width .4s var(--ease)}
.bar i.indet{width:40%;animation:indet 1.2s infinite var(--ease)}
@keyframes indet{0%{margin-left:-40%}100%{margin-left:100%}}
.jerr{font-size:12px;color:var(--err);margin-top:8px;line-height:1.45;word-break:break-all}
.jerr small{color:var(--muted);display:block;margin-top:2px}
.jsaved{font-size:12px;color:var(--ok);margin-top:6px;word-break:break-all;display:flex;align-items:center;gap:6px}
.foot{color:var(--faint);font-size:11px;text-align:center;padding:10px 6px 0}

/* 시트(대화상자) */
.modal{position:fixed;inset:0;z-index:20;display:flex;align-items:flex-end;justify-content:center;background:rgba(0,0,0,.62);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:fadeIn .2s ease}
.dialog{position:relative;width:100%;max-width:560px;max-height:92vh;overflow:auto;display:flex;flex-direction:column;gap:12px;
  padding:22px 18px calc(20px + env(safe-area-inset-bottom));background:var(--surface);color:var(--fg);border-radius:24px 24px 0 0;
  box-shadow:inset 0 1px 0 var(--line-2),0 -20px 60px rgba(0,0,0,.5);animation:sheetIn .32s var(--ease)}
.dialog::before{content:'';position:absolute;top:8px;left:50%;width:36px;height:4px;margin-left:-18px;border-radius:2px;background:var(--line-3)}
#acReq,#acWait,#acDenied,#acAdmin{display:flex;flex-direction:column;gap:12px}
.dialog.tall{min-height:55vh}
.dialog h2{margin:0;font-size:19px;font-weight:700;letter-spacing:-.02em}
.dialog p{margin:0;line-height:1.55;font-size:14px}
.sheet-h{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-right:-6px}
.sheet-h .row{gap:0}
@media (min-width:640px){.modal{align-items:center;padding:24px}.dialog{border-radius:24px;box-shadow:inset 0 0 0 1px var(--line-2),0 30px 80px rgba(0,0,0,.6)}.dialog::before{display:none}}
@keyframes sheetIn{from{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* 설정 */
.group{display:flex;flex-direction:column;background:var(--surface-2);border-radius:var(--r);box-shadow:inset 0 0 0 1px var(--line);padding:0 12px}
.set-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line);font-size:14px}
.set-row:first-child{border-top:0}
.set-t{flex:1;min-width:0}
.set-t b{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600}
.set-t small{display:block;color:var(--muted);font-size:12px;line-height:1.5;margin-top:2px;word-break:break-word}
.set-row .tile{width:32px;height:32px;border-radius:10px;align-self:flex-start}
.acts{display:flex;flex:none;margin-right:-6px}
.dev-list{display:flex;flex-direction:column;gap:0;margin:0 0 6px}
.dev-list:empty{display:none}
.dev{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:10px 0;border-top:1px solid var(--line);font-size:13px}
.dev .who{display:inline-flex;align-items:center;gap:4px;margin-top:3px;font-size:11.5px;color:var(--fg-2)}
.dev .who .i{width:12px;height:12px;color:var(--muted)}
.dev .who.solo{color:var(--faint)}
.person-edit{display:flex;align-items:center;gap:4px;width:100%}
.person-edit input{flex:1;height:38px!important;font-size:14px!important}
.ib.on{background:var(--accent-soft);color:var(--accent-hi)}
.dev .n{flex:1;min-width:0}
.dev .n b{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:14px;font-weight:600}
.dev .n small{color:var(--muted);display:block;font-size:11px;margin-top:2px;word-break:break-all}
.dev.pending .n b{color:var(--warn)}
.dev .acts .ib{width:34px;height:34px}
.dev .acts .ib .i{width:17px;height:17px}

/* 도움말 */
.steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;counter-reset:s}
.steps li{display:flex;gap:12px;align-items:flex-start;padding:10px 0}
.steps b{display:block;font-size:14px;font-weight:600}
.steps small{display:block;color:var(--muted);font-size:12px;line-height:1.5;margin-top:2px}
.help-tip{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--r);background:var(--accent-soft);color:#ffd2d3;font-size:13px;line-height:1.5}
.help-tip .i{width:18px;height:18px;color:var(--accent-hi);margin-top:1px}
.help-tip b{color:#fff}
.legend{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.legend div{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:12px;background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line);font-size:12px;line-height:1.35;color:var(--fg-2)}
.legend .i{width:18px;height:18px;color:var(--fg)}

/* 로그 */
.attempts{display:flex;flex-direction:column;gap:4px;font-size:12px}
.attempts div{padding:7px 10px;border-radius:9px;background:var(--surface-2)}
.attempts div{display:flex;gap:8px;align-items:flex-start;line-height:1.45}.attempts .i{width:14px;height:14px;margin-top:2px}
.attempts .ok{color:var(--ok)}.attempts .bad{color:var(--err)}
.log{flex:1;min-height:140px;max-height:48vh;overflow:auto;background:#050506;color:#c8ccd6;font:11px/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  padding:12px;border-radius:12px;white-space:pre-wrap;word-break:break-all;margin:0;box-shadow:inset 0 0 0 1px var(--line)}

/* 설치 안내 */
.diag{margin-top:14px;padding:12px 14px;border-radius:var(--r);background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line);font-size:13px;display:flex;flex-direction:column;gap:6px}
.diag b{margin-bottom:2px;color:var(--fg)}
#instBody{line-height:1.6;font-size:14px}
#instBody b{color:var(--fg)}
#instBody a.btn{text-decoration:none}
.inst-ready{flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:0 0 12px}
.ac-install{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding-top:12px;margin-top:4px}

/* 기타 */
.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--line-3);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;vertical-align:-2px;margin-right:6px}
@keyframes spin{to{transform:rotate(360deg)}}
.dot{position:absolute;top:3px;right:3px;min-width:17px;height:17px;padding:0 5px;border-radius:9px;background:var(--accent);color:#fff;font-size:10px;font-weight:800;
  line-height:17px;text-align:center;box-shadow:0 0 0 2px var(--bg)}
.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:60;max-width:min(92vw,480px);padding:11px 16px;
  border-radius:14px;background:rgba(32,32,37,.94);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:var(--fg);font-size:14px;text-align:center;
  box-shadow:inset 0 0 0 1px var(--line-2),0 16px 40px rgba(0,0,0,.5);animation:toastIn .25s var(--ease)}
@keyframes toastIn{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
.move-url{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:var(--r);background:var(--bg);box-shadow:inset 0 0 0 1px var(--line-2);font-size:14px;font-weight:600;word-break:break-all}
.move-url .i{width:18px;height:18px;color:var(--accent-hi)}
.upd-bar{position:fixed;z-index:15;left:50%;top:calc(68px + env(safe-area-inset-top));transform:translateX(-50%);display:flex;align-items:center;gap:10px;
  max-width:calc(100vw - 24px);padding:6px 6px 6px 14px;border-radius:999px;background:rgba(32,32,37,.94);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  box-shadow:inset 0 0 0 1px var(--line-2),0 12px 30px rgba(0,0,0,.5);font-size:13px;font-weight:600;white-space:nowrap;animation:toastIn .25s var(--ease)}
.upd-bar > .i{width:16px;height:16px;color:var(--accent-hi)}
.upd-bar .btn.small{height:30px;padding:0 14px;border-radius:999px}
.tip{position:fixed;z-index:80;max-width:240px;padding:7px 11px;border-radius:9px;background:#f4f4f5;color:#0b0b0d;font-size:12px;font-weight:600;line-height:1.4;
  pointer-events:none;box-shadow:0 8px 24px rgba(0,0,0,.45);animation:fadeIn .12s ease;word-break:keep-all}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
