/* 악보 점자 변환기 v.01 — 밝은 종이 + 짙은 남색. 글자 대비는 WCAG AA 이상. */
:root{
  color-scheme:light;
  --page:#f4f1ea; --card:#ffffff; --line:#d9d3c4; --ink:#1b1d21; --ink-2:#4a4f57;
  --navy:#1d2b3a; --navy-2:#2c3e52; --gold:#c99a2e; --focus:#0b5fd1;
  --paper:#fbf7ee; --dot:#2a2a2a; --ok:#156b37; --bad:#a3201b;
  --font:"Noto Sans KR",system-ui,-apple-system,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;
  --braille:"Segoe UI Symbol","Apple Braille","DejaVu Sans","Noto Sans Symbols 2",sans-serif;
}
*{box-sizing:border-box}
html{font-size:16px}
body{margin:0;background:var(--page);color:var(--ink);font-family:var(--font);line-height:1.6}
[hidden]{display:none!important}
.sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
:focus{outline:none}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}
a{color:#0d4fa8}
.skip{position:absolute;left:12px;top:-60px;background:#fff;color:var(--ink);padding:10px 16px;border-radius:6px;z-index:10;font-weight:700}
.skip:focus{top:10px}

/* top bar */
.top{background:var(--navy);color:#fff}
.top-in{max-width:1180px;margin:0 auto;padding:14px 20px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.brand{margin:0;font-size:1.25rem;font-weight:700;display:flex;align-items:center;gap:10px;letter-spacing:.01em}
.logo{font-family:var(--braille);color:var(--gold);font-size:1.35rem;letter-spacing:.06em}
.tagline{margin:0;color:#cfd6de;font-size:.92rem;flex:1;min-width:200px}
.lablink{color:#fff;text-decoration:none;font-size:.95rem;padding:6px 10px;border-radius:6px;border:1px solid rgba(255,255,255,.25)}
.lablink:hover{background:var(--navy-2)}

main{max-width:1180px;margin:0 auto;padding:22px 20px 10px}
main:focus{outline:none}
.layout{display:grid;grid-template-columns:minmax(300px,380px) 1fr;gap:22px;align-items:start}
@media (max-width:860px){.layout{grid-template-columns:1fr}}

/* side */
.side{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.tabs{display:flex;border-bottom:1px solid var(--line);background:#f8f6f0}
.tabs [role=tab]{flex:1;font:inherit;font-size:.95rem;font-weight:500;background:none;border:0;border-bottom:3px solid transparent;padding:12px 6px;color:var(--ink-2);cursor:pointer}
.tabs [role=tab][aria-selected=true]{color:var(--ink);border-bottom-color:var(--navy);font-weight:700;background:#fff}
.tabs [role=tab]:hover{color:var(--ink)}
.tabs [role=tab]:focus-visible{outline-offset:-3px}
.panel{padding:16px 18px 20px}
.ph{margin:0 0 4px;font-size:1.1rem}
.hint{color:var(--ink-2);margin:0 0 12px;font-size:.93rem}
.hint.small{font-size:.86rem}
.field-label{display:block;font-weight:500;font-size:.93rem;margin:10px 0 4px}
.field-label.inline{display:inline;margin:0 4px 0 12px}
input[type=search],input:not([type]),input[type=password],textarea,select{font:inherit;font-size:1rem;width:100%;padding:9px 11px;border:1.5px solid #8b8576;border-radius:8px;background:#fff;color:var(--ink)}
select{width:auto;min-width:180px}
textarea{resize:vertical}
input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--focus);outline-offset:1px}
.count{margin:8px 0 6px;font-size:.88rem;color:var(--ink-2)}
.songs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.song{all:unset;box-sizing:border-box;display:block;width:100%;cursor:pointer;padding:12px 14px;border:1.5px solid var(--line);border-radius:10px;background:#fff}
.song:hover{border-color:#8b8576}
.song:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.song[aria-current=true]{border-color:var(--navy);background:#eef2f7;box-shadow:inset 4px 0 0 var(--navy)}
.song .t{display:block;font-weight:700;font-size:1.02rem}
.song .s{display:block;color:var(--ink-2);font-size:.88rem}
.song .m{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.chip{font-size:.8rem;padding:1px 8px;border-radius:999px;background:#ece7da;color:#3d3a33}
.chip.soft{background:#f3f1ea;color:#57534a}
.request{margin-top:22px;padding-top:16px;border-top:1px solid var(--line)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:inherit;font-weight:700;font-size:1rem;background:var(--navy);color:#fff;border:2px solid var(--navy);border-radius:9px;padding:10px 18px;cursor:pointer;margin-top:10px;text-decoration:none}
.btn:hover{background:var(--navy-2)}
.btn:disabled{opacity:.45;cursor:default}
.btn.ghost{background:#fff;color:var(--navy)}
.btn.big{font-size:1.08rem;padding:13px 22px;margin-top:14px}
.msg{min-height:1.4em;margin:8px 0 0;font-size:.93rem}
.msg.bad{color:var(--bad);font-weight:500}

/* my file */
.drop{border:2px dashed #a49d8b;border-radius:12px;padding:18px;text-align:center;background:#fbfaf6;position:relative}
.drop.over{border-color:var(--navy);background:#eef2f7}
.drop:focus-within{outline:3px solid var(--focus);outline-offset:2px}
.drop .btn{margin-top:0}
.file{position:absolute;opacity:0;width:1px;height:1px;overflow:hidden}
.progress{height:8px;background:#e6e1d4;border-radius:4px;overflow:hidden;margin-top:12px}
.progress .bar{height:100%;width:0;background:var(--navy);transition:width .4s}
@media (prefers-reduced-motion:reduce){.progress .bar{transition:none}}

/* help */
.help h4{margin:16px 0 4px;font-size:1rem}
.help p,.help li{font-size:.93rem;color:#2c2f35}
.help ol,.help ul{padding-left:1.2em;margin:4px 0}

/* detail */
.detail{min-width:0}
.empty{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:28px}
.empty h2{margin:0 0 6px}
#view>h2{margin:0 0 6px;font-size:1.6rem;line-height:1.3}
.src{margin:0;font-size:.85rem;color:var(--ink-2);font-weight:500}
.meta{display:flex;flex-wrap:wrap;gap:4px 20px;margin:8px 0 14px;font-size:.93rem}
.meta>div{display:flex;gap:6px;white-space:nowrap}
.meta dt{color:var(--ink-2)}
.meta dt::after{content:""}
.meta dd{margin:0;font-weight:500}
.box{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:16px}
.box h3{margin:0 0 6px;font-size:1.15rem}
fieldset{border:0;padding:0;margin:10px 0 0}
legend{font-weight:500;font-size:.95rem;padding:0;margin-bottom:4px}
.radios{display:flex;flex-wrap:wrap;gap:6px 18px}
.radios label,.check{display:inline-flex;align-items:center;gap:6px;font-size:.98rem;cursor:pointer;padding:3px 0}
input[type=radio],input[type=checkbox]{width:18px;height:18px;accent-color:var(--navy);margin:0}
.warn{background:#fff7e0;border-left:4px solid var(--gold);padding:10px 12px;margin:14px 0 0;font-size:.92rem;border-radius:0 8px 8px 0}
.orig{margin:12px 0 0}
.link-out{font-weight:500}
.link-out::after{content:" ↗";}
.row{display:flex;gap:10px;align-items:center}
.row.wrap{flex-wrap:wrap;gap:6px 10px}
.row .btn{margin-top:12px}

/* braille preview: looks like embossed paper */
.pages{display:flex;flex-direction:column;gap:16px;margin-top:10px}
.page{background:var(--paper);border:1px solid #e0d6bf;border-radius:6px;box-shadow:0 1px 0 #e9e1cc,0 6px 16px rgba(60,50,30,.07);padding:14px 16px 16px;overflow-x:auto}
.pno{margin:0 0 6px;font-size:.78rem;color:#7a7160;text-align:right}
.cells{margin:0;font-family:var(--braille);color:var(--dot);white-space:pre;line-height:1.45;letter-spacing:.04em}
.size-s .cells{font-size:15px}
.size-m .cells{font-size:20px}
.size-l .cells{font-size:27px}

.adwrap{max-width:720px;margin:10px auto 0}
.foot{text-align:center;color:var(--ink-2);font-size:.85rem;padding:16px 20px 28px}
.foot p{margin:0}
@media (forced-colors:active){.song[aria-current=true]{border:3px solid Highlight}.tabs [role=tab][aria-selected=true]{border-bottom-color:Highlight}}
/* shared ad banner: make the small "광고/AD" label readable (contrast) */
.adwrap .lab-ads .la-ad{color:rgba(236,228,211,.9);border-color:rgba(236,228,211,.5)}
.adwrap .lab-ads .la-s{color:rgba(236,228,211,.82)}

.rule{background:#eef2f7;border-left:4px solid var(--navy);padding:9px 12px;margin:0 0 6px;font-size:.92rem;border-radius:0 8px 8px 0}
.rule a{font-weight:500}
input[type=url]{font:inherit;font-size:1rem;width:100%;padding:9px 11px;border:1.5px solid #8b8576;border-radius:8px;background:#fff;color:var(--ink)}

.pick{margin-top:12px;padding:12px;border:1.5px solid var(--line);border-radius:10px;background:#fbfaf6}
.pick select{width:100%}

.law{max-width:860px;margin:6px auto 14px;text-align:left;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 18px;color:#2c2f35}
.law h2{font-size:1rem;margin:0 0 6px}
.law p{margin:6px 0;font-size:.88rem;line-height:1.65}
.law blockquote{margin:8px 0;padding:8px 12px;border-left:4px solid var(--navy);background:#f6f4ee;border-radius:0 8px 8px 0}
.law blockquote p{margin:0}

/* ===== song list window (dialog) ===== */
.btn.wide{display:flex;width:100%;justify-content:center;align-items:baseline;gap:6px;box-sizing:border-box}
.tc{font-weight:500;opacity:.85}
.sub{font-size:.95rem;margin:18px 0 8px;color:var(--ink-2)}
.chip.soft{background:#f1efe8;color:var(--ink-2)}
.request{margin-top:26px;padding-top:16px;border-top:1.5px solid var(--line)}
body.modal-open{overflow:hidden}
dialog.browser{width:min(1100px,94vw);max-height:88vh;padding:0;border:0;border-radius:14px;background:var(--bg,#fbfaf6);color:var(--ink);box-shadow:0 24px 70px rgba(0,0,0,.35);overflow:hidden}
dialog.browser[open]{display:flex;flex-direction:column}
dialog.browser::backdrop{background:rgba(10,12,16,.62)}
.br-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 22px;background:#111;color:#ffd400}
.br-head h2{margin:0;font-size:1.2rem;color:#ffd400}
.btn.br-close{margin:0;background:transparent;color:#fff;border:1.5px solid #fff;padding:8px 16px}
.btn.br-close:hover{background:#2a2a2a}
.br-body{padding:16px 22px 18px;overflow:auto}
.br-tools{display:flex;gap:14px;align-items:flex-end}
.br-tools .field{display:flex;flex-direction:column}
.br-tools .grow{flex:1}
.br-tools .search{width:100%;box-sizing:border-box}
.br-tools select{min-width:150px}
.chips{border:0;margin:12px 0 0;padding:0;display:grid;grid-template-columns:52px 1fr;align-items:center;gap:10px}
.chips legend{float:left;font-weight:700;font-size:.95rem;padding:0;line-height:34px;margin:0}
.chip-row{display:flex;gap:6px;flex-wrap:wrap}
.chip-r{position:relative;cursor:pointer}
.chip-r input{position:absolute;opacity:0;width:1px;height:1px}
.chip-r span{display:inline-block;border:1.5px solid #8b8576;border-radius:999px;padding:5px 14px;font-size:.95rem;background:#fff;color:var(--ink)}
.chip-r input:checked+span{background:var(--navy);border-color:var(--navy);color:#fff;font-weight:700}
.chip-r input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px}
.chip-r:hover span{border-color:var(--navy)}
.count{margin:14px 0 6px}
.table-wrap{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:12px}
table.songtbl{width:100%;border-collapse:collapse;font-size:.97rem;table-layout:fixed}
col.c-comp{width:190px}col.c-inst{width:100px}col.c-ens{width:105px}col.c-len{width:92px}
table.songtbl th,table.songtbl td{text-align:left;padding:11px 14px;border-bottom:1px solid #ece7da;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
table.songtbl thead th{background:#f8f6f0;font-size:.85rem;color:var(--ink-2);font-weight:700;white-space:nowrap}
table.songtbl tbody tr:last-child th,table.songtbl tbody tr:last-child td{border-bottom:0}
table.songtbl tbody tr:hover{background:#f6f8fb}
table.songtbl tbody th{font-weight:700}
table.songtbl td:nth-child(5){white-space:nowrap;overflow:visible;text-overflow:clip}
.song-link{all:unset;cursor:pointer;display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#0b3d7a;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.song-link:hover{text-decoration-thickness:2px}
.song-link:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:3px}
.more{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:10px;min-height:44px}
.more .btn{margin-top:0}
.help h3{margin:16px 0 4px;font-size:1rem}

/* download bar on top, braille right under it */
.getbar{padding:14px 18px}
.getrow{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 32px}
.getrow fieldset{margin:0}
.getbtn{margin-left:auto}
.getbtn .btn{margin-top:0}
.getbar .wh{margin:8px 0 0}
.getbar .warn{margin-top:10px}
.getbar .orig{margin-top:10px}
.preview h3{margin-bottom:2px}
.getbar .msg:empty{min-height:0;margin:0}

.a11y{margin-top:22px;padding:14px 16px;border:1.5px solid var(--line);border-radius:10px;background:#fbfaf6}
.a11y .ph{font-size:1rem;margin-bottom:6px}
.a11y p,.a11y li{font-size:.9rem;color:#2c2f35;margin:4px 0}
.a11y ul{margin:4px 0;padding-left:1.2em}
