// ─── Icon system ─────────────────────────────────────────────────────────────
// 이모지를 얇은 라인 SVG(A안)로 치환. 색은 currentColor를 상속하므로 밝은/어두운
// 섹션 어디서든 자연스럽게 붙습니다. 네이비 섹션에서는 로 감싸면
// 유리 프레임(C안) 형태가 됩니다.
//
// 사용: ← 데이터에 남아 있는 이모지를 그대로 전달
// ← 이름으로 직접 지정
//
(() => {
const P = {
shield: 'M24 6l15 6v13c0 10-6.4 16-15 19C15.4 41 9 35 9 25V12z',
shieldCheck: ['M24 6l15 6v13c0 10-6.4 16-15 19C15.4 41 9 35 9 25V12z','M17 24l5 5 10-11'],
mail: ['M6 12h36v24H6z','M6 13l18 13L42 13'],
inbox: ['M8 30v8a2 2 0 002 2h28a2 2 0 002-2v-8','M8 30h9l3 5h8l3-5h9','M24 8v14m0 0l-5-5m5 5l5-5'],
send: ['M42 6L20 28','M42 6l-14 36-6-14-14-6z'],
search: ['M30 30l10 10','M16 21h10M21 16v10','M21 21m-12 0a12 12 0 1024 0a12 12 0 10-24 0'],
scan: ['M8 16V10a2 2 0 012-2h6M40 16V10a2 2 0 00-2-2h-6M8 32v6a2 2 0 002 2h6M40 32v6a2 2 0 01-2 2h-6','M10 24h28'],
tools: ['M30 8a9 9 0 00-8.4 12.2L9 32.8a3.5 3.5 0 004.9 4.9l12.6-12.6A9 9 0 0038 14l-5 5-4-4z'],
gear: ['M24 30a6 6 0 100-12 6 6 0 000 12z','M38 24l3-3-3-5-4 1-3-2-1-4h-6l-1 4-3 2-4-1-3 5 3 3-0 0-3 3 3 5 4-1 3 2 1 4h6l1-4 3-2 4 1 3-5z'],
refresh: ['M40 22a16 16 0 00-27.6-11M8 26a16 16 0 0027.6 11','M40 10v12H28M8 38V26h12'],
report: ['M30 6H14a3 3 0 00-3 3v30a3 3 0 003 3h20a3 3 0 003-3V13z','M29 6v8h8','M17 27l4 4 9-10'],
doc: ['M30 6H14a3 3 0 00-3 3v30a3 3 0 003 3h20a3 3 0 003-3V13z','M29 6v8h8','M17 24h14M17 31h10'],
chart: ['M8 40h32','M14 34V22M24 34V10M34 34V26'],
target: ['M24 24m-16 0a16 16 0 1032 0a16 16 0 10-32 0','M24 24m-8 0a8 8 0 1016 0a8 8 0 10-16 0','M24 22v4'],
clip: ['M34 20L21 33a6 6 0 01-8.5-8.5l14-14a4 4 0 015.7 5.7L18 30.5'],
clock: ['M24 24m-17 0a17 17 0 1034 0a17 17 0 10-34 0','M24 14v10l7 4'],
hook: ['M32 8v18a10 10 0 01-20 0','M26 8h12','M32 34v6'],
bug: ['M16 22a8 8 0 0116 0v8a8 8 0 01-16 0z','M16 26H8M40 26h-8M17 16l-5-5M31 16l5-5M18 38l-5 5M30 38l5 5'],
link: ['M20 28a7 7 0 010-10l6-6a7 7 0 0110 10l-3 3','M28 20a7 7 0 010 10l-6 6a7 7 0 01-10-10l3-3'],
lock: ['M12 22h24v18H12z','M17 22v-6a7 7 0 0114 0v6','M24 29v5'],
key: ['M30 18m-8 0a8 8 0 1016 0a8 8 0 10-16 0','M23 24L8 39','M13 34l4 4','M17 30l4 4'],
user: ['M24 22a7 7 0 100-14 7 7 0 000 14z','M10 40c0-7 6-12 14-12s14 5 14 12'],
users: ['M19 22a6 6 0 100-12 6 6 0 000 12z','M7 39c0-6 5-10 12-10s12 4 12 10','M32 12a6 6 0 010 12','M34 30c5 1 8 4 8 9'],
building: ['M10 42V10a2 2 0 012-2h16a2 2 0 012 2v32','M30 20h8a2 2 0 012 2v20','M16 16h8M16 23h8M16 30h8','M6 42h36'],
bank: ['M6 20L24 8l18 12','M10 20v18M18 20v18M30 20v18M38 20v18','M6 42h36'],
factory: ['M8 42V22l10 6V22l10 6V14l12 8v20z','M8 42h32','M16 34h4M26 34h4'],
cloud: ['M16 36a9 9 0 011-18 11 11 0 0121 3 8 8 0 01-2 15z'],
server: ['M8 10h32v11H8zM8 27h32v11H8z','M14 15.5h.02M14 32.5h.02'],
db: ['M24 14m-14 0a14 6 0 1028 0a14 6 0 10-28 0','M10 14v20c0 3.3 6.3 6 14 6s14-2.7 14-6V14','M10 24c0 3.3 6.3 6 14 6s14-2.7 14-6'],
network: ['M24 14a5 5 0 100-10 5 5 0 000 10','M10 44a5 5 0 100-10 5 5 0 000 10','M38 44a5 5 0 100-10 5 5 0 000 10','M24 14v10M24 24L12 34M24 24l12 10'],
globe: ['M24 24m-17 0a17 17 0 1034 0a17 17 0 10-34 0','M7 24h34','M24 7c5 5 7 11 7 17s-2 12-7 17c-5-5-7-11-7-17s2-12 7-17z'],
phone: ['M16 6h4l3 8-4 3a20 20 0 0012 12l3-4 8 3v4a4 4 0 01-4 4C22 36 12 26 12 10a4 4 0 014-4z'],
chat: ['M40 28a4 4 0 01-4 4H16l-8 8V12a4 4 0 014-4h24a4 4 0 014 4z'],
alert: ['M24 8l17 30H7z','M24 20v9M24 33v.02'],
siren: ['M12 36a12 12 0 0124 0z','M8 42h32','M24 10V6M12 14l-3-3M36 14l3-3'],
eye: ['M4 24s7-12 20-12 20 12 20 12-7 12-20 12S4 24 4 24z','M24 24m-5 0a5 5 0 1010 0a5 5 0 10-10 0'],
radar: ['M24 24m-17 0a17 17 0 1034 0a17 17 0 10-34 0','M24 24m-9 0a9 9 0 1018 0a9 9 0 10-18 0','M24 24L36 12'],
cpu: ['M14 14h20v20H14z','M20 20h8v8h-8z','M20 8v6M28 8v6M20 34v6M28 34v6M8 20h6M8 28h6M34 20h6M34 28h6'],
ai: ['M14 14h20v20H14z','M14 24h20M24 14v20','M20 8v6M28 8v6M20 34v6M28 34v6M8 20h6M8 28h6M34 20h6M34 28h6'],
folder: ['M6 14a2 2 0 012-2h12l4 5h16a2 2 0 012 2v19a2 2 0 01-2 2H8a2 2 0 01-2-2z'],
archive: ['M6 10h36v8H6z','M10 18v20a2 2 0 002 2h24a2 2 0 002-2V18','M19 26h10'],
check: ['M24 24m-17 0a17 17 0 1034 0a17 17 0 10-34 0','M16 24l6 6 11-13'],
spark: ['M24 6l4 12 12 4-12 4-4 12-4-12-12-4 12-4z'],
handshake: ['M6 22l8-8 6 4 8-4 6 4 8 8','M14 30l6 6 5-4 5 4 6-6','M20 26l4 4'],
route: ['M10 14h16a8 8 0 010 16H22','M38 34H22','M34 30l4 4-4 4','M14 10l-4 4 4 4'],
bridge: ['M6 20a18 18 0 0136 0','M6 20v18M42 20v18','M6 32h36','M16 32v-7M32 32v-7'],
money: ['M24 24m-16 0a16 16 0 1032 0a16 16 0 10-32 0','M24 15v18','M29 20a5 4 0 00-10 0c0 6 10 2 10 8a5 4 0 01-10 0'],
mobile: ['M14 6h20a2 2 0 012 2v32a2 2 0 01-2 2H14a2 2 0 01-2-2V8a2 2 0 012-2z','M21 37h6'],
monitor: ['M6 10h36v22H6z','M18 40h12M24 32v8'],
book: ['M8 10a2 2 0 012-2h11a5 5 0 015 5v27a4 4 0 00-4-4H8z','M40 10a2 2 0 00-2-2H27a5 5 0 00-5 5v27a4 4 0 014-4h14z'],
pin: ['M24 42s13-12 13-22a13 13 0 10-26 0c0 10 13 22 13 22z','M24 20m-5 0a5 5 0 1010 0a5 5 0 10-10 0'],
hourglass: ['M14 6h20M14 42h20','M16 6v7c0 6 8 8 8 11s-8 5-8 11v7M32 6v7c0 6-8 8-8 11s8 5 8 11v7'],
briefcase: ['M6 16h36v22H6z','M18 16v-4a2 2 0 012-2h8a2 2 0 012 2v4','M6 26h36'],
bolt: ['M26 4L10 28h10l-2 16 16-24H24z'],
star: ['M24 6l5.5 11.5L42 19l-9 9 2 13-11-6-11 6 2-13-9-9 12.5-1.5z'],
puzzle: ['M18 8h12v6a4 4 0 108 0h4v12h-6a4 4 0 100 8h6v6H18v-6a4 4 0 100-8h-6V14h6z'],
filter: ['M6 10h36L28 26v14l-8-5V26z'],
};
const MAP = {
'🛡':'shield','🛡️':'shield','✅':'check','☑️':'check','✔️':'check','✔':'check',
'📥':'inbox','📤':'send','📧':'mail','✉️':'mail','📩':'mail','📨':'mail','📮':'mail',
'🔎':'search','🔍':'search','🔬':'scan','🧪':'scan',
'🛠':'tools','🛠️':'tools','🔧':'tools','⚒️':'tools','🔨':'tools','⚙️':'gear','⚙':'gear',
'🔁':'refresh','🔄':'refresh','♻️':'refresh',
'📊':'chart','📈':'chart','📉':'chart','📋':'report','📄':'doc','📃':'doc','📝':'doc','📑':'doc',
'🎯':'target','📎':'clip','🖇️':'clip','⏱️':'clock','⏱':'clock','⏰':'clock','🕐':'clock','⌛':'hourglass','⏳':'hourglass',
'🎣':'hook','🦠':'bug','🐛':'bug','🔗':'link','🌐':'globe','🌍':'globe',
'🔒':'lock','🔐':'lock','🔓':'lock','🗝️':'key','🔑':'key',
'👤':'user','🙍':'user','👥':'users','👩💻':'users','👨💻':'users','👩💼':'users','👨💼':'users','🤝':'handshake',
'🏢':'building','🏛️':'building','🏛':'building','🏦':'bank','🏭':'factory','🏥':'building','🏫':'building',
'☁️':'cloud','☁︎':'cloud','☁':'cloud','🖥️':'monitor','💻':'monitor','🖧':'network','🕸️':'network','📡':'radar',
'🗄️':'archive','🗃️':'archive','🗂️':'folder','📁':'folder','📂':'folder','💾':'db','🗳️':'archive',
'🧠':'ai','🤖':'ai','⚡':'bolt','✨':'spark','💡':'spark','🔮':'spark',
'⚠️':'alert','⚠':'alert','🚨':'siren','👁️':'eye','👀':'eye',
'📞':'phone','☎️':'phone','📱':'mobile','💬':'chat','🗨️':'chat',
'💰':'money','💵':'money','💳':'money','💼':'briefcase','📍':'pin','📌':'pin',
'⭐':'star','🌟':'star','🧩':'puzzle','🔀':'route','🌉':'bridge','📚':'book','📖':'book','🖨️':'doc','🔖':'pin','🧭':'radar','⛔':'alert','🚫':'alert','🎫':'doc','🧱':'building','🗑️':'archive','📦':'archive','🏷️':'pin','🔔':'siren','🎓':'book','🧰':'tools','⏲️':'clock','🖱️':'monitor','🔋':'bolt','🧾':'doc',
};
const arr = v => Array.isArray(v) ? v : [v];
const Ico = ({ e, name, size = 24, framed = false, accent, stroke = 1.4, style, className = '' }) => {
const key = name || MAP[e] || MAP[String(e || '').replace(/\uFE0F/g, '')] || 'spark';
const paths = arr(P[key] || P.spark);
const svg = (
);
if (!framed) return svg;
return (
{svg}
);
};
window.Ico = Ico;
window.ICON_PATHS = P;
window.ICON_MAP = MAP;
})();