{"id":2337,"date":"2024-12-20T13:09:54","date_gmt":"2024-12-20T05:09:54","guid":{"rendered":"https:\/\/iweb20wpa.url.tku.edu.tw\/atgx\/?page_id=2337"},"modified":"2026-10-14T14:22:43","modified_gmt":"2026-10-14T06:22:43","slug":"taica","status":"publish","type":"page","link":"\/aiee\/?page_id=2337","title":{"rendered":"TAICA \u5b78\u5206\u5b78\u7a0b"},"content":{"rendered":"\n<!-- \u56de\u9802\u7aef\u6309\u9215\u6a23\u5f0f -->\n<style>\n#backToTop {\n    position: fixed;\n    bottom: 30px;\n    right: 30px;\n    width: 50px;\n    height: 50px;\n    background: rgba(255, 255, 255, 0.15);\n    backdrop-filter: blur(10px);\n    -webkit-backdrop-filter: blur(10px);\n    color: #666;\n    border: 1px solid rgba(255, 255, 255, 0.3);\n    border-radius: 50%;\n    cursor: pointer;\n    font-size: 20px;\n    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);\n    opacity: 0;\n    visibility: hidden;\n    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n    z-index: 1000;\n}\n\n#backToTop.show {\n    opacity: 1;\n    visibility: visible;\n}\n\n#backToTop:hover {\n    background: rgba(255, 255, 255, 0.25);\n    color: #333;\n    border-color: rgba(255, 255, 255, 0.5);\n    transform: translateY(-5px);\n    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);\n}\n\n#backToTop:active {\n    transform: translateY(-1px);\n}\n<\/style>\n\n<!-- \u56de\u9802\u7aef\u6309\u9215 -->\n<button id=\"backToTop\" title=\"\u56de\u5230\u9802\u7aef\">\u2191<\/button>\n\n<!-- \u56de\u9802\u7aef\u6309\u9215\u529f\u80fd -->\n<script>\nconst backToTopBtn = document.getElementById('backToTop');\n\nwindow.addEventListener('scroll', function() {\n    if (window.pageYOffset > 300) {\n        backToTopBtn.classList.add('show');\n    } else {\n        backToTopBtn.classList.remove('show');\n    }\n});\n\nbackToTopBtn.addEventListener('click', function() {\n    window.scrollTo({\n        top: 0,\n        behavior: 'smooth'\n    });\n});\n<\/script>\n\n\n<img decoding=\"async\" src=\"\/aiee\/wp-content\/uploads\/2026\/09\/TAICA-Banner-1150923-e1790150341295.jpg\" class=\"img-fluid img-fluid \" alt=\"\u4e0a\u50b3\u5716\u7247\">\n\n\n<!-- ============================================================\n  TAICA \u9996\u9801\u958b\u982d\u4ecb\u7d39\uff08\u6574\u5408\uff1a\u9801\u9762\u6a19\u984c\uff0b\u6a19\u8a9e\uff0b\u806f\u76df\u4ecb\u7d39\uff0c\u4e2d\uff0fEN \u5207\u63db\uff09\n  \u8aaa\u660e\uff1a\u672c\u5340\u584a\u9396\u5728 Shadow DOM \u5167\uff0c\u4e0d\u6703\u53d7\u5916\u90e8 WordPress \u6a23\u5f0f\u5f71\u97ff\uff0c\u4e5f\u4e0d\u6703\u6c61\u67d3\u5916\u90e8\u9801\u9762\u6a23\u5f0f\u3002\n  \u4f7f\u7528\u65b9\u5f0f\uff1a\u8cbc\u4e0a\u5f8c\uff0c\u8acb\u522a\u9664\u539f\u672c\u7684\u300c\u9801\u9762\u6a19\u984c\u300d\u3001\u300c\u6a19\u8a9e heading\u300d\u8207\u820a\u7684\u806f\u76df\u4ecb\u7d39\u81ea\u8a02 HTML \u5340\u584a\u3002\n  \u7dad\u8b77\u65b9\u5f0f\uff1a\u6587\u5b57\u96c6\u4e2d\u5728\u4e0b\u65b9 TEXT\u3002\n============================================================ -->\n<!-- \u9032\u5834\u52d5\u756b\uff1a\u642d\u914d\u9801\u9762\u6700\u4e0b\u65b9\u7684\u300c\u52d5\u756b\u63a7\u5236\u5668\u300d\uff0c\u6372\u5230\u672c\u5340\u584a\u6642\u64ad\u653e\u4e00\u6b21 -->\n<div id=\"taicaHeroHost\" class=\"anim-ready\" data-anim data-anim-ms=\"1600\"><\/div>\n<script>\n(function () {\n  \"use strict\";\n  var HOST = document.getElementById(\"taicaHeroHost\");\n  if (!HOST || HOST.shadowRoot) return;\n  var ROOT = HOST.attachShadow({ mode: \"open\" });\n  var LINK = \"https:\/\/taicatw.net\/\";\n  var TEXT = {\n    zh: {\n      title: \"TAICA \u5b78\u5206\u5b78\u7a0b\",\n      tagline: \"\u5728TAICA\u7684\u5171\u5b78\u7db2\u7d61\u4e2d\uff0c\u8de8\u6821\u9023\u7d50AI\u77e5\u8b58\uff0c\u958b\u555f\u66f4\u5f37\u5927\u7684\u5b78\u7fd2\u52d5\u80fd\u3002\",\n      desc: \"\u6559\u80b2\u90e8\u300c\u81fa\u7063\u5927\u5c08\u9662\u6821\u4eba\u5de5\u667a\u6167\u5b78\u7a0b\u806f\u76df\u300d\uff08Taiwan AI College Alliance, TAICA\uff09\u900f\u904e\u8de8\u6821\u4eba\u5de5\u667a\u6167\u5b78\u7a0b\u7d71\u6574\u6559\u5b78\u8cc7\u6e90\uff0c\u63d0\u4f9b\u4eba\u5de5\u667a\u6167\u76f8\u95dc\u8ab2\u7a0b\u8207\u8de8\u6821\u5b78\u7fd2\u6a5f\u6703\uff0c\u76ee\u524d\u5171\u958b\u8a2d <b class=\\\"num\\\">5<\/b> \u985e\u5b78\u5206\u5b78\u7a0b\uff0c\u6eff\u8db3\u4e0d\u540c\u9818\u57df\u5b78\u751f\u7684\u5b78\u7fd2\u9700\u6c42\u3002\",\n      btn: \"\u63a2\u7d22 TAICA \u806f\u76df\"\n    },\n    en: {\n      title: \"TAICA Credit Programs\",\n      tagline: \"Connect AI knowledge across universities through the TAICA learning network.\",\n      desc: \"The Taiwan AI College Alliance (TAICA), established by the Ministry of Education, integrates teaching resources through inter-university AI programs to offer AI courses and cross-campus learning opportunities. TAICA currently offers <b class=\\\"num\\\">5<\/b> credit programs to meet the needs of students from diverse academic backgrounds.\",\n      btn: \"Explore TAICA\"\n    }\n  };\n  var CSS =\n    \/* ===== \u9032\u5834\u52d5\u756b\uff1a\u7531\u9801\u5c3e\u300c\u52d5\u756b\u63a7\u5236\u5668\u300d\u52a0\u4e0a class \u89f8\u767c\uff0c\u53ea\u64ad\u4e00\u6b21 ===== *\/\n    '@keyframes fadeUp{from{opacity:0;transform:translateY(18px);}to{opacity:1;transform:none;}}' +\n    '@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}' +\n    '@keyframes fadeLeft{from{opacity:0;transform:translateX(28px);}to{opacity:1;transform:none;}}' +\n    '@keyframes pop{0%{opacity:0;transform:scale(.6);}60%{opacity:1;transform:scale(1.1);}100%{opacity:1;transform:scale(1);}}' +\n    '@media (prefers-reduced-motion:no-preference){' +\n      ':host(.anim-ready:not(.is-in)) .lang,:host(.anim-ready:not(.is-in)) .eyebrow,:host(.anim-ready:not(.is-in)) h1,:host(.anim-ready:not(.is-in)) .tagline,:host(.anim-ready:not(.is-in)) .desc,:host(.anim-ready:not(.is-in)) .btn{opacity:0;}' +\n      ':host(.is-in:not(.anim-done)) .eyebrow{animation:fadeUp .6s ease-out .05s both;}' +\n      ':host(.is-in:not(.anim-done)) h1{animation:fadeUp .6s cubic-bezier(.2,.7,.3,1) .15s both;}' +\n      ':host(.is-in:not(.anim-done)) .tagline{animation:fadeUp .6s cubic-bezier(.2,.7,.3,1) .3s both;}' +\n      ':host(.is-in:not(.anim-done)) .desc{animation:fadeUp .6s cubic-bezier(.2,.7,.3,1) .45s both;}' +\n      ':host(.is-in:not(.anim-done)) .btn{animation:fadeUp .6s cubic-bezier(.2,.7,.3,1) .6s both;}' +\n      ':host(.is-in:not(.anim-done)) .lang{animation:fadeIn .5s ease-out .6s both;}' +\n    '}' +\n    ':host{all:initial;display:block;padding:40px 0;}@media (max-width:760px){:host{padding:28px 0;}}' +\n    '.wrap{font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans TC\",\"Microsoft JhengHei\",sans-serif;' +\n      'color:#2b2b2b;max-width:1200px;margin:0 auto;padding:0;box-sizing:border-box;text-align:center;position:relative;}' +\n    '.wrap *{box-sizing:border-box;}' +\n    '.eyebrow{display:inline-flex;align-items:center;gap:14px;color:#a11d21;font-size:15px;letter-spacing:1px;}' +\n    '.eyebrow::before,.eyebrow::after{content:\"\";width:60px;height:6px;border-top:2px solid #a11d21;border-bottom:2px solid #a11d21;}' +\n    'h1{margin:8px 0 10px;font-size:40px;font-weight:800;color:#1f2329;letter-spacing:2px;line-height:1.3;}' +\n    '.tagline{margin:0 0 22px;font-size:17px;font-weight:600;color:#1976d2;letter-spacing:.5px;line-height:1.6;}' +\n    '.desc{max-width:860px;margin:0 auto 26px;font-size:16px;line-height:1.95;color:#444;}' +\n    '.num{color:#a11d21;font-size:20px;}' +\n    '.btn{display:inline-flex;align-items:center;gap:8px;padding:12px 24px;border-radius:10px;background:#a11d21;color:#fff;' +\n      'text-decoration:none;font-size:15px;font-weight:600;transition:opacity .2s,transform .2s;}' +\n    '.btn:hover{opacity:.9;transform:translateY(-2px);}' +\n    '.lang{position:absolute;right:0;top:0;display:inline-flex;padding:3px;border:1px solid #e3e6ea;border-radius:999px;background:#fff;}' +\n    '.lang button{border:none;background:transparent;padding:6px 14px;border-radius:999px;font-size:13px;font-weight:600;color:#6b7280;cursor:pointer;font-family:inherit;}' +\n    '.lang button[aria-pressed=\"true\"]{background:#1976d2;color:#fff;}' +\n    '.lang button:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(74,144,226,.35);}' +\n    '@media (max-width:760px){' +\n      '.wrap{padding:0 16px;}' +\n      '.eyebrow::before,.eyebrow::after{width:40px;}' +\n      'h1{font-size:28px;}' +\n      '.tagline{font-size:15px;margin-bottom:16px;}' +\n      '.desc{font-size:15px;text-align:justify;}' +\n      '.lang{position:static;display:flex;width:max-content;margin:0 auto 16px;}' +\n      '.wrap[lang=\"en\"] .desc{text-align:left;}' +\n      '.btn{display:flex;justify-content:center;}' +\n    '}';\n  var EXT = '<svg viewBox=\"0 0 24 24\" width=\"15\" height=\"15\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"\/><polyline points=\"15 3 21 3 21 9\"\/><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"\/><\/svg>';\n  var lang = \"zh\";\n  function render() {\n    var t = TEXT[lang];\n    ROOT.innerHTML =\n      \"<style>\" + CSS + \"<\/style>\" +\n      '<div class=\"wrap\" lang=\"' + (lang === \"zh\" ? \"zh-TW\" : \"en\") + '\">' +\n        '<div class=\"lang\" role=\"group\" aria-label=\"Language\">' +\n          '<button type=\"button\" data-lang=\"zh\" aria-pressed=\"' + (lang === \"zh\") + '\">\u4e2d\u6587<\/button>' +\n          '<button type=\"button\" data-lang=\"en\" aria-pressed=\"' + (lang === \"en\") + '\">EN<\/button>' +\n        \"<\/div>\" +\n        '<div class=\"eyebrow\">TAICA\u00d7TKU<\/div>' +\n        \"<h1>\" + t.title + \"<\/h1>\" +\n        '<p class=\"tagline\">' + t.tagline + \"<\/p>\" +\n        '<p class=\"desc\">' + t.desc + \"<\/p>\" +\n        '<a class=\"btn\" href=\"' + LINK + '\" target=\"_blank\" rel=\"noopener\">' + t.btn + EXT + \"<\/a>\" +\n      \"<\/div>\";\n  }\n  ROOT.addEventListener(\"click\", function (e) {\n    var b = e.target.closest(\".lang button\");\n    if (!b) return;\n    lang = b.getAttribute(\"data-lang\");\n    render();\n  });\n  render();\n\n  \/\/ ------------------------------------------------------------\n  \/\/ \u6578\u5b57\u8df3\u52d5\uff08\u9032\u5834\u52d5\u756b\u6642\u64ad\u653e\u4e00\u6b21\uff1b\u6e1b\u5c11\u52d5\u614b\u6548\u679c\u6642\u4e0d\u64ad\uff09\n  \/\/ ------------------------------------------------------------\n  (function () {\n    var started = false;\n    function run() {\n      if (started) return;\n      if (!HOST.classList.contains(\"is-in\")) return;\n      started = true;\n      if (HOST.classList.contains(\"anim-done\")) return;\n      setTimeout(function () {\n        var el = ROOT.querySelector(\".num\");\n        if (!el) return;\n        var to = parseInt(el.textContent, 10) || 0;\n        var t0 = null;\n        el.textContent = \"0\";\n        function step(ts) {\n          if (t0 === null) t0 = ts;\n          var p = Math.min((ts - t0) \/ 900, 1);\n          el.textContent = String(Math.round(to * (1 - Math.pow(1 - p, 3))));\n          if (p < 1) requestAnimationFrame(step);\n        }\n        requestAnimationFrame(step);\n      }, 600);\n    }\n    if (\"MutationObserver\" in window) {\n      new MutationObserver(run).observe(HOST, { attributes: true, attributeFilter: [\"class\"] });\n    }\n    run();\n  })();\n\n  \/\/ \u4fdd\u96aa\uff1a\u842c\u4e00\u9801\u5c3e\u7684\u52d5\u756b\u63a7\u5236\u5668\u6c92\u6709\u8f09\u5165\uff0c3 \u79d2\u5f8c\u76f4\u63a5\u986f\u793a\u5167\u5bb9\n  setTimeout(function () {\n    if (!HOST.classList.contains(\"is-in\")) {\n      HOST.classList.add(\"is-in\");\n      HOST.classList.add(\"anim-done\");\n    }\n  }, 3000);\n})();\n<\/script>\n\n\n\n<div class=\"wp-block-tkuwpbs5-bs5-container container\" style=\"padding-top:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--40);position:relative\" block_id=\"ltia23opfb42dnj7jkw\"><style><\/style>\n<div class=\"wp-block-tkuwpbs5-bs5-container container\" style=\"position:relative\" block_id=\"m50ot6xeo1fxhwj4x4r\"><style><\/style>\n<div class=\"wp-block-tkuwpbs5-bs5-column col-md-12 align-self-center\" style=\"padding-top:var(--wp--preset--spacing--40);padding-right:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--60)\"><img decoding=\"async\" src=\"\/aiee\/wp-content\/uploads\/2026\/05\/\u4eba\u5de5\u667a\u6167\u5b78\u5206\u5b78\u7a0b\u7e3d\u8868_\u4e2d\u6587_\u6d6e\u6c34\u5370_20260423\u6838\u5b9a\u7248.jpg\" class=\"img-fluid img-fluid mx-auto d-block\" alt=\"\u4e0a\u50b3\u5716\u7247\"><\/div>\n<\/div>\n<\/div>\n\n\n\n<!-- ============================================================\n  TAICA \u9069\u7528\u5c0d\u8c61\u8207\u898f\u5b9a\uff08\u5169\u968e\u6bb5\u8b49\u66f8\uff0b\u4e2d\uff0fEN \u5207\u63db\uff09\n  \u8aaa\u660e\uff1a\u672c\u5340\u584a\u9396\u5728 Shadow DOM \u5167\uff0c\u4e0d\u6703\u53d7\u5916\u90e8 WordPress \u6a23\u5f0f\u5f71\u97ff\uff0c\u4e5f\u4e0d\u6703\u6c61\u67d3\u5916\u90e8\u9801\u9762\u6a23\u5f0f\u3002\n  \u7dad\u8b77\u65b9\u5f0f\uff1a\u6587\u5b57\u96c6\u4e2d\u5728\u4e0b\u65b9 TEXT\uff0c\u4e0d\u7528\u6539\u7248\u9762\u7d50\u69cb\u3002\n============================================================ -->\n<!-- \u9032\u5834\u52d5\u756b\uff1a\u642d\u914d\u9801\u9762\u6700\u4e0b\u65b9\u7684\u300c\u52d5\u756b\u63a7\u5236\u5668\u300d\uff0c\u6372\u5230\u672c\u5340\u584a\u6642\u64ad\u653e\u4e00\u6b21 -->\n<div id=\"taicaEligHost\" data-anim data-anim-ms=\"2100\"><\/div>\n\n<script>\n(function () {\n  \"use strict\";\n\n  var HOST = document.getElementById(\"taicaEligHost\");\n  if (!HOST || HOST.shadowRoot) return;\n  var ROOT = HOST.attachShadow({ mode: \"open\" });\n\n  \/\/ ------------------------------------------------------------\n  \/\/ 1. \u6587\u5b57\n  \/\/ ------------------------------------------------------------\n  var TEXT = {\n    zh: {\n      title: \"\u9069\u7528\u5c0d\u8c61\u8207\u898f\u5b9a\",\n      facts: [\n        { k: \"\u9069\u7528\u5c0d\u8c61\", v: \"\u5927\u5b78\u90e8\u3001\u7814\u7a76\u6240\u5b78\u751f\" },\n        { k: \"\u5b78\u7a0b\u7e3d\u5b78\u5206\", v: '<b class=\"big\">15<\/b> \u5b78\u5206' }\n      ],\n      s1: {\n        tag: \"STAGE 1\u30fb\u57fa\u672c\u9580\u6abb\",\n        title: \"\u6de1\u6c5f\u5927\u5b78TAICA\u5b78\u5206\u5b78\u7a0b\u8b49\u660e\u66f8\",\n        rules: [\n          '\u4fee\u7562\u672c\u5b78\u7a0b\u6307\u5b9a\u8ab2\u7a0b\u81f3\u5c11 <b class=\"hl\">15 \u5b78\u5206<\/b>',\n          '\u5176\u4e2d\u81f3\u5c11 <b class=\"hl\">6 \u5b78\u5206<\/b>\u4e0d\u5c6c\u65bc\u5b78\u751f\u4e3b\u4fee\u5b78\u7cfb\u4e4b\u61c9\u4fee\u79d1\u76ee'\n        ]\n      },\n      arrow: \"\u53d6\u5f97\u5f8c\",\n      s2: {\n        tag: \"STAGE 2\u30fb\u9032\u968e\",\n        title: \"\u6559\u80b2\u90e8 TAICA \u5b78\u7a0b\u5b78\u5206\u8b49\u660e\",\n        pre: \"\u9808\u5148\u53d6\u5f97\u6de1\u6c5f\u5927\u5b78TAICA\u5b78\u5206\u5b78\u7a0b\u8b49\u660e\u66f8\",\n        rules: [\n          '\u540c\u4e00\u5b78\u5206\u5b78\u7a0b\u5167\uff0c\u81f3\u5c11 <b class=\"hl\">8 \u5b78\u5206<\/b>\u70ba\u806f\u76df\u8a8d\u5b9a\u4e4b\u4e3b\u5c0e\u8ab2\u7a0b\uff08\u93e1\u50cf\u8ab2\u7a0b\u6216\u885b\u661f\u8ab2\u7a0b\uff09'\n        ],\n        subTitle: \"\u5b78\u5206\u8a8d\u62b5\u898f\u5247\",\n        sub: [\n          'TAICA \u5404\u5b78\u5206\u5b78\u7a0b\u9593\u4e92\u76f8\u8a8d\u62b5\uff0c\u4e0a\u9650 <b class=\"hl\">6 \u5b78\u5206<\/b>\u3002\u4f8b\u5982\uff1a\u300c\u4eba\u5de5\u667a\u6167\u502b\u7406\u300d\u53ef\u65bc\u5404\u5b78\u7a0b\u4e2d\u8a8d\u62b5 3 \u5b78\u5206\uff0c\u4f46\u7d2f\u8a08\u8a8d\u62b5\u4e4b TAICA \u8ab2\u7a0b\u5b78\u5206\u4e0d\u5f97\u8d85\u904e 6 \u5b78\u5206\u3002'\n        ]\n      }\n    },\n    en: {\n      title: \"Eligibility and Regulations\",\n      facts: [\n        { k: \"Eligibility\", v: \"Undergraduate & graduate students\" },\n        { k: \"Total credits\", v: '<b class=\"big\">15<\/b> credits' }\n      ],\n      s1: {\n        tag: \"STAGE 1 \u00b7 Basic\",\n        title: \"Tamkang University TAICA Credit Program Certificate\",\n        rules: [\n          'Complete at least <b class=\"hl\">15 credits<\/b> of designated courses in the program',\n          'At least <b class=\"hl\">6 credits<\/b> must be from courses outside the required courses of your major'\n        ]\n      },\n      arrow: \"Then\",\n      s2: {\n        tag: \"STAGE 2 \u00b7 Advanced\",\n        title: \"MOE TAICA Credit Program Certificate\",\n        pre: \"Requires the Tamkang University TAICA Credit Program Certificate first\",\n        rules: [\n          'Within the same program, at least <b class=\"hl\">8 credits<\/b> must come from TAICA alliance courses (mirror or satellite courses)'\n        ],\n        subTitle: \"Credit transfer rules\",\n        sub: [\n          'Up to <b class=\"hl\">6 credits<\/b> may be transferred between TAICA credit programs. For example, \u201cAI Ethics\u201d may count for 3 credits in each program, but the total transferred TAICA credits may not exceed 6.'\n        ]\n      }\n    }\n  };\n\n  \/\/ ------------------------------------------------------------\n  \/\/ 2. \u6a23\u5f0f\n  \/\/ ------------------------------------------------------------\n  var CSS =\n    \/* ===== \u9032\u5834\u52d5\u756b\uff1a\u7531\u9801\u5c3e\u300c\u52d5\u756b\u63a7\u5236\u5668\u300d\u52a0\u4e0a class \u89f8\u767c\uff0c\u53ea\u64ad\u4e00\u6b21 ===== *\/\n    '@keyframes fadeUp{from{opacity:0;transform:translateY(18px);}to{opacity:1;transform:none;}}' +\n    '@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}' +\n    '@keyframes fadeLeft{from{opacity:0;transform:translateX(28px);}to{opacity:1;transform:none;}}' +\n    '@keyframes pop{0%{opacity:0;transform:scale(.6);}60%{opacity:1;transform:scale(1.1);}100%{opacity:1;transform:scale(1);}}' +\n    '@media (prefers-reduced-motion:no-preference){' +\n      ':host(.anim-ready:not(.is-in)) .head,:host(.anim-ready:not(.is-in)) .fact,:host(.anim-ready:not(.is-in)) .stage,:host(.anim-ready:not(.is-in)) .arrow{opacity:0;}' +\n      ':host(.is-in:not(.anim-done)) .head{animation:fadeUp .6s ease-out both;}' +\n      ':host(.is-in:not(.anim-done)) .fact{animation:fadeUp .5s cubic-bezier(.2,.7,.3,1) both;}' +\n      ':host(.is-in:not(.anim-done)) .fact:nth-child(1){animation-delay:0.15s;}' +\n      ':host(.is-in:not(.anim-done)) .fact:nth-child(2){animation-delay:0.27s;}' +\n      ':host(.is-in:not(.anim-done)) .s1{animation:fadeUp .6s cubic-bezier(.2,.7,.3,1) .45s both;}' +\n      ':host(.is-in:not(.anim-done)) .arrow{animation:fadeIn .3s ease-out .95s both;}' +\n      ':host(.is-in:not(.anim-done)) .arrow .c{animation:pop .5s ease-out .95s both;}' +\n      ':host(.is-in:not(.anim-done)) .s2{animation:fadeLeft .7s cubic-bezier(.2,.7,.3,1) 1.15s both;}' +\n      '@media (max-width:860px){:host(.is-in:not(.anim-done)) .s2{animation-name:fadeUp;}}' +\n    '}' +\n    ':host{all:initial;display:block;padding:40px 0;}@media (max-width:760px){:host{padding:28px 0;}}' +\n    '.wrap{font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans TC\",\"Microsoft JhengHei\",sans-serif;' +\n      'color:#2b2b2b;max-width:1200px;margin:0 auto;box-sizing:border-box;}' +\n    '.wrap *{box-sizing:border-box;}' +\n\n    '.head{position:relative;text-align:center;margin:0 0 26px;}' +\n    '.eyebrow{display:inline-flex;align-items:center;gap:14px;color:#a11d21;font-size:15px;letter-spacing:1px;}' +\n    '.eyebrow::before,.eyebrow::after{content:\"\";width:60px;height:6px;border-top:2px solid #a11d21;border-bottom:2px solid #a11d21;}' +\n    '.title{margin:6px 0 0;font-size:30px;font-weight:700;color:#1f2329;letter-spacing:2px;line-height:1.4;}' +\n    '.lang{position:absolute;right:0;bottom:4px;display:inline-flex;padding:3px;border:1px solid #e3e6ea;border-radius:999px;background:#fff;}' +\n    '.lang button{border:none;background:transparent;padding:6px 14px;border-radius:999px;font-size:13px;font-weight:600;color:#6b7280;cursor:pointer;font-family:inherit;}' +\n    '.lang button[aria-pressed=\"true\"]{background:#1976d2;color:#fff;}' +\n    '.lang button:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(74,144,226,.35);}' +\n\n    \/* \u91cd\u9ede\u6578\u5b57 *\/\n    '.facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:24px;}' +\n    '.fact{padding:16px 20px;border:1px solid #e8e8e8;border-radius:14px;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.04);}' +\n    '.fact-k{font-size:13px;font-weight:700;color:#8a8f98;letter-spacing:.5px;margin-bottom:4px;}' +\n    '.fact-v{font-size:17px;font-weight:700;color:#1f2329;line-height:1.5;}' +\n    '.big{font-size:26px;color:#a11d21;line-height:1;margin-right:2px;}' +\n\n    \/* \u5169\u968e\u6bb5 *\/\n    '.ladder{display:grid;grid-template-columns:minmax(0,1fr) 64px minmax(0,1fr);align-items:start;}' +\n    '.stage{padding:22px 24px;border:1px solid #e8e8e8;border-radius:14px;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.04);' +\n      'border-top:4px solid #a11d21;display:flex;flex-direction:column;gap:12px;}' +\n    '.stage.s2{border-top-color:#1976d2;}' +\n    '.tag{align-self:flex-start;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.5px;background:#fdecec;color:#a11d21;}' +\n    '.s2 .tag{background:#e3f2fd;color:#1976d2;}' +\n    '.stage h3{margin:0;font-size:20px;font-weight:700;color:#1f2329;line-height:1.4;}' +\n    '.pre{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:8px;background:#fff4f4;color:#a11d21;font-size:14px;font-weight:600;line-height:1.5;}' +\n    '.pre .n{flex-shrink:0;width:20px;height:20px;border-radius:50%;background:#a11d21;color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;}' +\n    '.rules{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;}' +\n    '.rules li{position:relative;padding-left:26px;font-size:15px;line-height:1.75;color:#333;}' +\n    '.rules li::before{content:\"\";position:absolute;left:2px;top:6px;width:16px;height:16px;border-radius:50%;background:#e3f2fd;}' +\n    '.rules li::after{content:\"\";position:absolute;left:7px;top:10px;width:5px;height:8px;border-right:2px solid #1976d2;border-bottom:2px solid #1976d2;transform:rotate(45deg);}' +\n    '.s1 .rules li::before{background:#fdecec;}' +\n    '.s1 .rules li::after{border-color:#a11d21;}' +\n    '.hl{color:#a11d21;font-weight:700;}' +\n    '.sub{margin-top:4px;padding:14px 16px;border-radius:10px;background:#f7fbff;border:1px dashed #cdd6e1;}' +\n    '.sub-h{font-size:13.5px;font-weight:700;color:#1976d2;margin-bottom:8px;}' +\n    '.sub ul{margin:0;padding-left:18px;}' +\n    '.sub li{font-size:14px;line-height:1.75;color:#444;margin-bottom:6px;}' +\n    '.sub li:last-child{margin-bottom:0;}' +\n\n    '.arrow{align-self:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:#9aa0a8;font-size:12px;font-weight:700;letter-spacing:.5px;}' +\n    '.arrow .c{width:40px;height:40px;border-radius:50%;background:#fff;border:1px solid #d6dde6;display:flex;align-items:center;justify-content:center;color:#1976d2;box-shadow:0 2px 8px rgba(0,0,0,.05);}' +\n    '.arrow svg{transition:transform .2s;}' +\n\n    '@media (max-width:860px){' +\n      '.head{margin-bottom:22px;}' +\n      '.title{font-size:25px;}' +\n      '.eyebrow::before,.eyebrow::after{width:40px;}' +\n      '.lang{position:static;margin-top:12px;}' +\n      '.facts{grid-template-columns:1fr;gap:10px;}' +\n      '.fact{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:12px 16px;}' +\n      '.fact-k{margin:0;flex-shrink:0;}' +\n      '.fact-v{font-size:15.5px;text-align:right;}' +\n      '.big{font-size:22px;}' +\n      '.ladder{grid-template-columns:1fr;grid-template-rows:auto 64px auto;}' +\n      '.arrow{flex-direction:row;}' +\n      '.arrow svg{transform:rotate(90deg);}' +\n      '.stage{padding:18px 16px;}' +\n      '.stage h3{font-size:18px;}' +\n    '}';\n\n  \/\/ ------------------------------------------------------------\n  \/\/ 3. \u7e6a\u88fd\n  \/\/ ------------------------------------------------------------\n  var ARROW = '<svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg>';\n  var lang = \"zh\";\n\n  function li(arr) {\n    return arr.map(function (x) { return \"<li>\" + x + \"<\/li>\"; }).join(\"\");\n  }\n\n  function render() {\n    var t = TEXT[lang];\n    ROOT.innerHTML =\n      \"<style>\" + CSS + \"<\/style>\" +\n      '<div class=\"wrap\" lang=\"' + (lang === \"zh\" ? \"zh-TW\" : \"en\") + '\">' +\n        '<div class=\"head\">' +\n          '<div class=\"eyebrow\">TAICA\u00d7TKU<\/div>' +\n          '<h2 class=\"title\">' + t.title + \"<\/h2>\" +\n          '<div class=\"lang\" role=\"group\" aria-label=\"Language\">' +\n            '<button type=\"button\" data-lang=\"zh\" aria-pressed=\"' + (lang === \"zh\") + '\">\u4e2d\u6587<\/button>' +\n            '<button type=\"button\" data-lang=\"en\" aria-pressed=\"' + (lang === \"en\") + '\">EN<\/button>' +\n          \"<\/div>\" +\n        \"<\/div>\" +\n\n        '<div class=\"facts\">' +\n          t.facts.map(function (f) {\n            return '<div class=\"fact\"><div class=\"fact-k\">' + f.k + '<\/div><div class=\"fact-v\">' + f.v + \"<\/div><\/div>\";\n          }).join(\"\") +\n        \"<\/div>\" +\n\n        '<div class=\"ladder\">' +\n          '<div class=\"stage s1\">' +\n            '<span class=\"tag\">' + t.s1.tag + \"<\/span>\" +\n            \"<h3>\" + t.s1.title + \"<\/h3>\" +\n            '<ul class=\"rules\">' + li(t.s1.rules) + \"<\/ul>\" +\n          \"<\/div>\" +\n          '<div class=\"arrow\" aria-hidden=\"true\"><span class=\"c\">' + ARROW + \"<\/span><span>\" + t.arrow + \"<\/span><\/div>\" +\n          '<div class=\"stage s2\">' +\n            '<span class=\"tag\">' + t.s2.tag + \"<\/span>\" +\n            \"<h3>\" + t.s2.title + \"<\/h3>\" +\n            '<div class=\"pre\"><span class=\"n\">1<\/span>' + t.s2.pre + \"<\/div>\" +\n            '<ul class=\"rules\">' + li(t.s2.rules) + \"<\/ul>\" +\n            '<div class=\"sub\"><div class=\"sub-h\">' + t.s2.subTitle + \"<\/div><ul>\" + li(t.s2.sub) + \"<\/ul><\/div>\" +\n          \"<\/div>\" +\n        \"<\/div>\" +\n      \"<\/div>\";\n  }\n\n  ROOT.addEventListener(\"click\", function (e) {\n    var b = e.target.closest(\".lang button\");\n    if (!b) return;\n    lang = b.getAttribute(\"data-lang\");\n    render();\n  });\n\n  render();\n\n  \/\/ ------------------------------------------------------------\n  \/\/ \u6578\u5b57\u8df3\u52d5\uff08\u9032\u5834\u52d5\u756b\u6642\u64ad\u653e\u4e00\u6b21\uff1b\u6e1b\u5c11\u52d5\u614b\u6548\u679c\u6642\u4e0d\u64ad\uff09\n  \/\/ ------------------------------------------------------------\n  (function () {\n    var started = false;\n    function run() {\n      if (started) return;\n      if (!HOST.classList.contains(\"is-in\")) return;\n      started = true;\n      if (HOST.classList.contains(\"anim-done\")) return;\n      setTimeout(function () {\n        var el = ROOT.querySelector(\".big\");\n        if (!el) return;\n        var to = parseInt(el.textContent, 10) || 0;\n        var t0 = null;\n        el.textContent = \"0\";\n        function step(ts) {\n          if (t0 === null) t0 = ts;\n          var p = Math.min((ts - t0) \/ 900, 1);\n          el.textContent = String(Math.round(to * (1 - Math.pow(1 - p, 3))));\n          if (p < 1) requestAnimationFrame(step);\n        }\n        requestAnimationFrame(step);\n      }, 300);\n    }\n    if (\"MutationObserver\" in window) {\n      new MutationObserver(run).observe(HOST, { attributes: true, attributeFilter: [\"class\"] });\n    }\n    run();\n  })();\n})();\n<\/script>\n\n\n\n<!-- ============================================================\n  TAICA \u5b78\u5206\u5b78\u7a0b\u4ecb\u7d39\uff085 \u683c\u9078\u55ae\uff0b\u9ede\u9078\u5c55\u958b\u8a73\u7d30\u9762\u677f\uff0b\u4e2d\uff0fEN \u5207\u63db\uff09\n  \u8aaa\u660e\uff1a\u672c\u5340\u584a\u9396\u5728 Shadow DOM \u5167\uff0c\u4e0d\u6703\u53d7\u5916\u90e8 WordPress \u6a23\u5f0f\u5f71\u97ff\uff0c\u4e5f\u4e0d\u6703\u6c61\u67d3\u5916\u90e8\u9801\u9762\u6a23\u5f0f\u3002\n  \u7dad\u8b77\u65b9\u5f0f\uff1a\u5b78\u7a0b\u8cc7\u6599\u96c6\u4e2d\u5728\u4e0b\u65b9 PROGRAMS \u9663\u5217\u3002\n    \u30fbmap\uff1a\u4e2d\u6587\u8ab2\u7a0b\u5730\u5716\u5716\u7247\u7db2\u5740\uff0c\u7559\u7a7a\u5b57\u4e32 \"\" \u6703\u986f\u793a\u300c\u8ab2\u7a0b\u5730\u5716\u5f85\u88dc\u300d\u7a7a\u767d\u6846\u3002\n    \u30fbmapEn\uff1a\u82f1\u6587\u8ab2\u7a0b\u5730\u5716\u5716\u7247\u7db2\u5740\uff0c\u5207\u5230 EN \u6642\u986f\u793a\uff1b\u7559\u7a7a\u5247\u6cbf\u7528\u4e2d\u6587\u5730\u5716\u3002\n    \u30fbisNew\uff1atrue \u6703\u5728\u5361\u7247\u4e0a\u986f\u793a NEW \u6a19\u7c64\uff0c\u4e4b\u5f8c\u8981\u62ff\u6389\u6539\u6210 false \u5373\u53ef\u3002\n============================================================ -->\n<!-- \u9032\u5834\u52d5\u756b\uff1a\u642d\u914d\u9801\u9762\u6700\u4e0b\u65b9\u7684\u300c\u52d5\u756b\u63a7\u5236\u5668\u300d\uff0c\u6372\u5230\u672c\u5340\u584a\u6642\u64ad\u653e\u4e00\u6b21 -->\n<div id=\"taicaProgHost\" data-anim data-anim-ms=\"1800\"><\/div>\n\n<script>\n(function () {\n  \"use strict\";\n  var HOST = document.getElementById(\"taicaProgHost\");\n  if (!HOST || HOST.shadowRoot) return;\n  var ROOT = HOST.attachShadow({ mode: \"open\" });\n  \/\/ ------------------------------------------------------------\n  \/\/ 1. \u5b78\u7a0b\u8cc7\u6599\n  \/\/ ------------------------------------------------------------\n  var PROGRAMS = [\n    {\n      map: \"\/aiee\/wp-content\/uploads\/2025\/06\/20250617-e4babae5b7a5e699bae685a7e68ea2e7b4a2e68789e794a8e5adb8e58886e5adb8e7a88bai.jpg\",\n      mapEn: \"https:\/\/aiee.acad.tku.edu.tw\/aiee\/wp-content\/uploads\/2026\/09\/\u4eba\u5de5\u667a\u6167\u63a2\u7d22\u61c9\u7528\u5b78\u5206\u5b78\u7a0b_\u82f1\u6587_\u6d6e\u6c34\u5370_20250625-\u6838\u5b9a\u7248.jpg\",   \/\/ \u82f1\u6587\u8ab2\u7a0b\u5730\u5716\uff08EN \u6a21\u5f0f\u986f\u793a\uff1b\u7559\u7a7a\u5247\u6cbf\u7528\u4e2d\u6587\u5730\u5716\uff09\n      link: \"https:\/\/aiee.acad.tku.edu.tw\/aiee\/?page_id=6598\",\n      isNew: false,\n      zh: {\n        name: \"\u4eba\u5de5\u667a\u6167\u63a2\u7d22\u61c9\u7528\u5b78\u5206\u5b78\u7a0b\",\n        tag: \"\u5165\u9580\u9996\u9078\",\n        who: \"\u6700\u5bb9\u6613\u5165\u9580\u7684\u9078\u9805\uff0c\u9069\u5408\u6240\u6709\u8de8\u9818\u57df\u5b78\u751f\u4fee\u7fd2\",\n        desc: \"\u70ba\u914d\u5408\u5354\u52a9\u653f\u5e9c\u76f8\u95dc\u7522\u696d\u5275\u65b0\u8a08\u756b\uff0c\u56e0\u61c9\u9019\u6ce2\u4eba\u5de5\u667a\u6167\u9769\u547d\uff0c\u672c\u5b78\u5206\u5b78\u7a0b\u5c6c\u65bc\u4eba\u5de5\u667a\u6167\u61c9\u7528\u5b78\u5206\u5b78\u7a0b\uff0c\u5c6c\u65bc\u5b78\u5206\u5b78\u7a0b\u5167\u6700\u5bb9\u6613\u5165\u9580\u7684\u9078\u9805\uff0c\u4e3b\u8981\u7d66\u8de8\u9818\u57df\u5b78\u751f\u4fee\u7fd2\uff0c\u56e0\u6b64\u8ab2\u7a0b\u8a2d\u8a08\u5f9e\u5148\u4fee\u7684\u7a0b\u5f0f\u8a2d\u8a08\u548c\u6a5f\u7387\u958b\u59cb\uff0c\u900f\u904e\u5faa\u5e8f\u6f38\u9032\u7684\u4fee\u8ab2\u898f\u5283\uff0c\u8b93\u5b78\u751f\u9664\u4e86\u6709\u5b8c\u5099\u7684\u4eba\u5de5\u667a\u6167\u6280\u8853\u5916\uff0c\u4e5f\u4e86\u89e3\u76f8\u95dc\u502b\u7406\u8b70\u984c\uff0c\u6700\u5f8c\u900f\u904e\u4eba\u5de5\u667a\u6167\u5c08\u984c\u61c9\u7528\uff0c\u8b93\u5b78\u751f\u5011\u7406\u89e3\u4eba\u5de5\u667a\u6167\u6280\u8853\u5728\u7522\u696d\u4e0a\u843d\u5730\u7684\u8003\u91cf\u3002\"\n      },\n      en: {\n        name: \"Applied Artificial Intelligence Exploration Program\",\n        tag: \"Entry level\",\n        who: \"The most accessible option, open to students from all disciplines\",\n        desc: \"To support national industry innovation initiatives and respond to the ongoing AI revolution, this program is designed as the most accessible entry point within the TAICA credit programs. It is specifically intended for students from non-computing disciplines. The curriculum begins with foundational subjects such as programming and probability, then progresses gradually. Students not only gain solid technical knowledge in AI but also explore ethical considerations, and ultimately apply what they\u2019ve learned through capstone AI application projects, which focus on real-world industry challenges.\"\n      }\n    },\n    {\n      map: \"\/aiee\/wp-content\/uploads\/2026\/07\/\u4eba\u5de5\u667a\u6167\u5de5\u696d\u61c9\u7528\u5b78\u5206\u5b78\u7a0b_\u4e2d\u6587_\u6d6e\u6c34\u5370_20260423\u6838\u5b9a\u7248.jpg\",\n      mapEn: \"https:\/\/aiee.acad.tku.edu.tw\/aiee\/wp-content\/uploads\/2026\/09\/\u4eba\u5de5\u667a\u6167\u5de5\u696d\u61c9\u7528\u5b78\u5206\u5b78\u7a0b_\u82f1\u6587_\u6d6e\u6c34\u5370_20260423\u6838\u5b9a\u7248.jpg\",   \/\/ \u82f1\u6587\u8ab2\u7a0b\u5730\u5716\uff08EN \u6a21\u5f0f\u986f\u793a\uff1b\u7559\u7a7a\u5247\u6cbf\u7528\u4e2d\u6587\u5730\u5716\uff09\n      link: \"https:\/\/aiee.acad.tku.edu.tw\/aiee\/?page_id=6613\",\n      isNew: false,\n      zh: {\n        name: \"\u4eba\u5de5\u667a\u6167\u5de5\u696d\u61c9\u7528\u5b78\u5206\u5b78\u7a0b\",\n        tag: \"\u5de5\u696d\u61c9\u7528\",\n        who: \"\u7406\u5de5\u5b78\u9662\u5b78\u751f\uff0c\u6216\u5df2\u5b8c\u6210\u300c\u4eba\u5de5\u667a\u6167\u63a2\u7d22\u61c9\u7528\u5b78\u5206\u5b78\u7a0b\u300d\u7684\u5b78\u751f\",\n        desc: \"\u70ba\u914d\u5408\u5354\u52a9\u653f\u5e9c\u7684\u5de5\u696d\u76f8\u95dc\u7522\u696d\u5275\u65b0\u8a08\u756b\uff0c\u9a45\u52d5\u7522\u696d\u767c\u5c55\u91cf\u80fd\uff0c\u70ba\u56e0\u61c9\u9019\u6ce2\u4eba\u5de5\u667a\u6167\u9769\u547d\uff0c\u672c\u5b78\u5206\u5b78\u7a0b\u5c6c\u65bc\u4eba\u5de5\u667a\u6167\u61c9\u7528\u5b78\u5206\u5b78\u7a0b\uff0c\u4e3b\u8981\u7d66\u8de8\u9818\u57df\u5b78\u751f\u4fee\u7fd2\uff0c\u56e0\u6b64\u8ab2\u7a0b\u8a2d\u8a08\u5f9e\u5148\u4fee\u7684\u7d71\u8a08\u958b\u59cb\uff0c\u5efa\u8b70\u5b78\u751f\u5728\u4fee\u8ab2\u4e4b\u524d\u4ecd\u9700\u4fee\u7fd2\u7a0b\u5f0f\u8a2d\u8a08\u8ab2\u7a0b\uff0c\u63a5\u4e0b\u4f86\u900f\u904e\u5faa\u5e8f\u6f38\u9032\u7684\u4fee\u8ab2\u898f\u5283\uff0c\u624d\u80fd\u5728\u5de5\u696d\u4e0a\u5275\u65b0\u3002\"\n      },\n      en: {\n        name: \"Artificial Intelligence in Industrial Applications Program\",\n        tag: \"Industry\",\n        who: \"Students in science and engineering, or those who have completed the Applied AI Exploration Program\",\n        desc: \"To support government-led industrial innovation initiatives and boost industrial development capacity in response to the ongoing AI revolution, this program is primarily designed for cross-disciplinary students. The curriculum begins with statistics as a prerequisite, and it is recommended that students also take programming courses beforehand. A step-by-step learning progression is provided to equip students with the skills necessary for industrial innovation through AI.\"\n      }\n    },\n    {\n      map: \"\/aiee\/wp-content\/uploads\/2025\/06\/20250617-e4babae5b7a5e699bae685a7e887aae784b6e8aa9ee8a880e68a80e8a193e5adb8e58886e5adb8e7a88bai.jpg\",\n      mapEn: \"https:\/\/aiee.acad.tku.edu.tw\/aiee\/wp-content\/uploads\/2026\/09\/\u4eba\u5de5\u667a\u6167\u81ea\u7136\u8a9e\u8a00\u6280\u8853\u5b78\u5206\u5b78\u7a0b_\u82f1\u6587_\u6d6e\u6c34\u5370_20250625-\u6838\u5b9a\u7248.jpg\",   \/\/ \u82f1\u6587\u8ab2\u7a0b\u5730\u5716\uff08EN \u6a21\u5f0f\u986f\u793a\uff1b\u7559\u7a7a\u5247\u6cbf\u7528\u4e2d\u6587\u5730\u5716\uff09\n      link: \"https:\/\/aiee.acad.tku.edu.tw\/aiee\/?page_id=6629\",\n      isNew: false,\n      zh: {\n        name: \"\u4eba\u5de5\u667a\u6167\u81ea\u7136\u8a9e\u8a00\u6280\u8853\u5b78\u5206\u5b78\u7a0b\",\n        tag: \"\u81ea\u7136\u8a9e\u8a00\",\n        who: \"\u96fb\u8cc7\u9818\u57df\u5b78\u751f\uff0c\u6216\u5df2\u5b8c\u6210\u300c\u4eba\u5de5\u667a\u6167\u63a2\u7d22\u61c9\u7528\u5b78\u5206\u5b78\u7a0b\u300d\u7684\u5b78\u751f\",\n        desc: \"\u70ba\u914d\u5408\u5354\u52a9\u653f\u5e9c\u7684\u5404\u9818\u57df\u7684\u7522\u696d\u5275\u65b0\u8a08\u756b\uff0c\u9a45\u52d5\u7522\u696d\u767c\u5c55\u91cf\u80fd\uff0c\u70ba\u56e0\u61c9\u751f\u6210\u5f0f\u4eba\u5de5\u667a\u6167\u3001\u8207\u5927\u578b\u8a9e\u8a00\u6a21\u578b\u61c9\u7528\u5728\u5404\u9818\u57df\u7684\u6f6e\u6d41\uff0c\u672c\u5b78\u5206\u5b78\u7a0b\u5c6c\u65bc\u4eba\u5de5\u667a\u6167\u6280\u8853\u5b78\u5206\u5b78\u7a0b\uff0c\u900f\u904e\u5faa\u5e8f\u6f38\u9032\u7684\u4fee\u8ab2\u898f\u5283\uff0c\u8b93\u5b78\u751f\u5728\u81ea\u7136\u8a9e\u8a00\u76f8\u95dc\u9818\u57df\u6709\u6240\u7406\u89e3\uff0c\u672a\u4f86\u61c9\u7528\u6280\u8853\u5728\u5404\u7522\u696d\u7684\u5275\u65b0\u4e0a\u3002\"\n      },\n      en: {\n        name: \"Artificial Intelligence for Natural Language Technology Program\",\n        tag: \"NLP\",\n        who: \"Students in electrical engineering and computer science, or those who have completed the Applied AI Exploration Program\",\n        desc: \"To support the government\u2019s cross-sector industrial innovation initiatives and drive forward industrial development, this program addresses the rise of Generative AI and large language model applications across various fields. Through a step-by-step course structure, the program helps students develop a strong understanding of natural language technologies, preparing them to apply these skills to future innovations in diverse industries.\"\n      }\n    },\n    {\n      map: \"\/aiee\/wp-content\/uploads\/2024\/12\/\u4eba\u5de5\u667a\u6167\u8996\u89ba\u6280\u8853\u5b78\u5206\u5b78\u7a0b-e1734684223585.webp\",\n      mapEn: \"https:\/\/aiee.acad.tku.edu.tw\/aiee\/wp-content\/uploads\/2026\/09\/\u4eba\u5de5\u667a\u6167\u8996\u89ba\u6280\u8853\u5b78\u5206\u5b78\u7a0b_\u82f1\u6587_\u6d6e\u6c34\u5370_20241030-\u6838\u5b9a\u7248.jpg\",   \/\/ \u82f1\u6587\u8ab2\u7a0b\u5730\u5716\uff08EN \u6a21\u5f0f\u986f\u793a\uff1b\u7559\u7a7a\u5247\u6cbf\u7528\u4e2d\u6587\u5730\u5716\uff09\n      link: \"https:\/\/aiee.acad.tku.edu.tw\/aiee\/?page_id=6636\",\n      isNew: false,\n      zh: {\n        name: \"\u4eba\u5de5\u667a\u6167\u8996\u89ba\u6280\u8853\u5b78\u5206\u5b78\u7a0b\",\n        tag: \"\u96fb\u8166\u8996\u89ba\",\n        who: \"\u96fb\u8cc7\u9818\u57df\u5b78\u751f\uff0c\u6216\u5df2\u5b8c\u6210\u300c\u4eba\u5de5\u667a\u6167\u63a2\u7d22\u61c9\u7528\u5b78\u5206\u5b78\u7a0b\u300d\u7684\u5b78\u751f\",\n        desc: \"\u70ba\u914d\u5408\u5354\u52a9\u653f\u5e9c\u7684\u5728\u7522\u696d\u5275\u65b0\u8a08\u756b\uff0c\u9a45\u52d5\u7522\u696d\u767c\u5c55\u91cf\u80fd\uff0c\u70ba\u56e0\u61c9\u9019\u6ce2\u4eba\u5de5\u667a\u6167\u9769\u547d\uff0c\u672c\u5b78\u5206\u5b78\u7a0b\u5c6c\u65bc\u4eba\u5de5\u667a\u6167\u6280\u8853\u5b78\u5206\u5b78\u7a0b\uff0c\u4e3b\u8981\u8a2d\u8a08\u7d66\u96fb\u6a5f\u8cc7\u8a0a\u9818\u57df\u7684\u5b78\u751f\uff0c\u900f\u904e\u5faa\u5e8f\u6f38\u9032\u7684\u4fee\u8ab2\u898f\u5283\uff0c\u8b93\u5b78\u751f\u9664\u4e86\u6709\u5b8c\u5099\u7684\u4eba\u5de5\u667a\u6167\u6280\u8853\u5916\uff0c\u4e5f\u4e86\u89e3\u76f8\u95dc\u502b\u7406\u8b70\u984c\uff0c\u624d\u80fd\u5728\u5f71\u50cf\u3001\u8996\u89ba\u6216\u76f8\u95dc\u61c9\u7528\u6709\u4e0a\u57fa\u65bc\u4eba\u672c\u7684\u5275\u65b0\u3002\"\n      },\n      en: {\n        name: \"Artificial Intelligence for Computer Vision and Imaging Technology Program\",\n        tag: \"Vision\",\n        who: \"Students in electrical engineering and computer science, or those who have completed the Applied AI Exploration Program\",\n        desc: \"This program is designed primarily for students in electrical engineering and computer science fields in order to support national industrial innovation initiatives and boost development capacity in response to the ongoing AI revolution. The curriculum is structured to progressively build students\u2019 technical expertise in AI while also ensuring they understand the ethical implications of AI technologies. This foundation prepares students to pursue human-centered innovations in areas such as computer vision, image analysis, and related applications.\"\n      }\n    },\n    {\n      map: \"\/aiee\/wp-content\/uploads\/2026\/09\/\u4eba\u5de5\u667a\u6167\u8cc7\u8a0a\u5b89\u5168\u6280\u8853\u5b78\u5206\u5b78\u7a0b_\u4e2d\u6587_\u6d6e\u6c34\u5370_20260423\u6838\u5b9a\u7248.jpg\",\n      mapEn: \"https:\/\/aiee.acad.tku.edu.tw\/aiee\/wp-content\/uploads\/2026\/09\/\u4eba\u5de5\u667a\u6167\u8cc7\u8a0a\u5b89\u5168\u6280\u8853\u5b78\u5206\u5b78\u7a0b_\u82f1\u6587_\u6d6e\u6c34\u5370_20260423\u6838\u5b9a\u7248.jpg\",   \/\/ \u82f1\u6587\u8ab2\u7a0b\u5730\u5716\uff08EN \u6a21\u5f0f\u986f\u793a\uff1b\u7559\u7a7a\u5247\u6cbf\u7528\u4e2d\u6587\u5730\u5716\uff09\n      link: \"https:\/\/aiee.acad.tku.edu.tw\/aiee\/?page_id=7743\",\n      isNew: true,\n      zh: {\n        name: \"\u4eba\u5de5\u667a\u6167\u8cc7\u8a0a\u5b89\u5168\u6280\u8853\u5b78\u5206\u5b78\u7a0b\",\n        tag: \"\u8cc7\u8a0a\u5b89\u5168\",\n        who: \"\u96fb\u8cc7\u9818\u57df\u5b78\u751f\uff0c\u6216\u5df2\u5b8c\u6210\u300c\u4eba\u5de5\u667a\u6167\u63a2\u7d22\u61c9\u7528\u5b78\u5206\u5b78\u7a0b\u300d\u7684\u5b78\u751f\",\n        desc: \"\u70ba\u914d\u5408\u5354\u52a9\u653f\u5e9c\u7684\u5404\u9818\u57df\u7684\u7522\u696d\u5275\u65b0\u8a08\u756b\uff0c\u9a45\u52d5\u7522\u696d\u767c\u5c55\u91cf\u80fd\uff0c\u4e26\u56e0\u61c9\u4eba\u5de5\u667a\u6167\u53ca\u8cc7\u8a0a\u5b89\u5168\u8fc5\u901f\u767c\u5c55\u4e4b\u8da8\u52e2\uff0c\u672c\u5b78\u5206\u5b78\u7a0b\u5c6c\u65bc\u4eba\u5de5\u667a\u6167\u6280\u8853\u5b78\u5206\u5b78\u7a0b\uff0c\u900f\u904e\u5faa\u5e8f\u6f38\u9032\u7684\u4fee\u8ab2\u898f\u5283\uff0c\u8b93\u5b78\u751f\u5728\u8cc7\u5b89\u76f8\u95dc\u9818\u57df\u6709\u6240\u7406\u89e3\u3002\"\n      },\n      en: {\n        name: \"Artificial Intelligence for Cybersecurity Technology Program\",\n        tag: \"Cybersecurity\",\n        who: \"Students in electrical engineering and computer science, or those who have completed the Applied AI Exploration Program\",\n        desc: \"To support the government\u2019s cross-sector industrial innovation initiatives, drive industrial development, and respond to the rapid advancement of artificial intelligence and information security, this program is part of the AI technology credit programs. Through a step-by-step course structure, it helps students build a solid understanding of cybersecurity-related fields.\"\n      }\n    }\n  ];\n  var UI = {\n    zh: {\n      title: \"\u5b78\u5206\u5b78\u7a0b\u4ecb\u7d39\",\n      sub: \"\u5171 <b>5<\/b> \u500b\u5b78\u5206\u5b78\u7a0b\uff0c\u9ede\u9078\u5b78\u7a0b\u67e5\u770b\u4ecb\u7d39\",\n      who: \"\u9069\u5408\u5c0d\u8c61\", desc: \"\u5b78\u7a0b\u7c21\u4ecb\", more: \"\u77ad\u89e3\u66f4\u591a\",\n      mapHint: \"\u9ede\u5716\u7247\u53ef\u958b\u555f\u5927\u5716\", mapTbd: \"\u8ab2\u7a0b\u5730\u5716\u5f85\u88dc\", close: \"\u6536\u5408\"\n    },\n    en: {\n      title: \"Credit Programs\",\n      sub: \"<b>5<\/b> credit programs in total. Select one to view details.\",\n      who: \"Who should apply\", desc: \"About the program\", more: \"Learn more\",\n      mapHint: \"Click the image to enlarge\", mapTbd: \"Course map coming soon\", close: \"Close\"\n    }\n  };\n  \/\/ ------------------------------------------------------------\n  \/\/ 2. \u6a23\u5f0f\n  \/\/ ------------------------------------------------------------\n  var CSS =\n    \/* ===== \u9032\u5834\u52d5\u756b\uff1a\u7531\u9801\u5c3e\u300c\u52d5\u756b\u63a7\u5236\u5668\u300d\u52a0\u4e0a class \u89f8\u767c\uff0c\u53ea\u64ad\u4e00\u6b21 ===== *\/\n    '@keyframes fadeUp{from{opacity:0;transform:translateY(18px);}to{opacity:1;transform:none;}}' +\n    '@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}' +\n    '@keyframes fadeLeft{from{opacity:0;transform:translateX(28px);}to{opacity:1;transform:none;}}' +\n    '@keyframes pop{0%{opacity:0;transform:scale(.6);}60%{opacity:1;transform:scale(1.1);}100%{opacity:1;transform:scale(1);}}' +\n    '@keyframes shine{0%,70%{background-position:100% 0;}100%{background-position:-60% 0;}}' +\n    '@media (prefers-reduced-motion:no-preference){' +\n      ':host(.anim-ready:not(.is-in)) .head,:host(.anim-ready:not(.is-in)) .card,:host(.anim-ready:not(.is-in)) .collapse{opacity:0;}' +\n      ':host(.is-in:not(.anim-done)) .head{animation:fadeUp .6s ease-out both;}' +\n      ':host(.is-in:not(.anim-done)) .card{animation:fadeUp .5s cubic-bezier(.2,.7,.3,1) both;}' +\n      ':host(.is-in:not(.anim-done)) .card:nth-child(1){animation-delay:0.15s;}' +\n      ':host(.is-in:not(.anim-done)) .card:nth-child(2){animation-delay:0.23s;}' +\n      ':host(.is-in:not(.anim-done)) .card:nth-child(3){animation-delay:0.31s;}' +\n      ':host(.is-in:not(.anim-done)) .card:nth-child(4){animation-delay:0.39s;}' +\n      ':host(.is-in:not(.anim-done)) .card:nth-child(5){animation-delay:0.47s;}' +\n      ':host(.is-in:not(.anim-done)) .collapse{animation:fadeUp .6s cubic-bezier(.2,.7,.3,1) .65s both;}' +\n      '.panel{animation:fadeIn .35s ease-out both;}' +\n      '.new{background:linear-gradient(110deg,#a11d21 40%,#e0575b 50%,#a11d21 60%);background-size:260% 100%;animation:shine 4.5s ease-in-out infinite;}' +\n    '}' +\n    ':host{all:initial;display:block;padding:40px 0;}@media (max-width:760px){:host{padding:28px 0;}}' +\n    '.wrap{font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans TC\",\"Microsoft JhengHei\",sans-serif;' +\n      'color:#2b2b2b;max-width:1200px;margin:0 auto;box-sizing:border-box;}' +\n    '.wrap *{box-sizing:border-box;}' +\n    '.head{position:relative;text-align:center;margin:0 0 24px;}' +\n    '.eyebrow{display:inline-flex;align-items:center;gap:14px;color:#a11d21;font-size:15px;letter-spacing:1px;}' +\n    '.eyebrow::before,.eyebrow::after{content:\"\";width:60px;height:6px;border-top:2px solid #a11d21;border-bottom:2px solid #a11d21;}' +\n    '.title{margin:6px 0 4px;font-size:30px;font-weight:700;color:#1f2329;letter-spacing:2px;line-height:1.4;}' +\n    '.sub{margin:0;font-size:14.5px;color:#6b7280;}' +\n    '.sub b{color:#a11d21;font-size:17px;}' +\n    '.lang{position:absolute;right:0;bottom:6px;display:inline-flex;padding:3px;border:1px solid #e3e6ea;border-radius:999px;background:#fff;}' +\n    '.lang button{border:none;background:transparent;padding:6px 14px;border-radius:999px;font-size:13px;font-weight:600;color:#6b7280;cursor:pointer;font-family:inherit;}' +\n    '.lang button[aria-pressed=\"true\"]{background:#1976d2;color:#fff;}' +\n    '.lang button:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(74,144,226,.35);}' +\n    \/* 5 \u683c\u9078\u55ae *\/\n    '.grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;}' +\n    '.card{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:18px 16px 16px;' +\n      'border:1px solid #e8e8e8;border-radius:14px;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.04);cursor:pointer;' +\n      'text-align:left;font-family:inherit;color:inherit;transition:border-color .2s,box-shadow .2s,transform .2s;}' +\n    '.card:hover{border-color:#bcd6f2;transform:translateY(-2px);box-shadow:0 6px 18px rgba(25,118,210,.10);}' +\n    '.card:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(74,144,226,.35);}' +\n    '.card[aria-expanded=\"true\"]{border-color:#1976d2;box-shadow:0 6px 20px rgba(25,118,210,.14);}' +\n    '.card[aria-expanded=\"true\"]::after{content:\"\";position:absolute;left:50%;bottom:-9px;width:16px;height:16px;margin-left:-8px;' +\n      'background:#f7fbff;border-right:1px solid #1976d2;border-bottom:1px solid #1976d2;transform:rotate(45deg);}' +\n    '.no{font-size:13px;font-weight:700;color:#1976d2;background:#e3f2fd;border-radius:8px;padding:3px 8px;letter-spacing:.5px;}' +\n    '.card[aria-expanded=\"true\"] .no{background:#1976d2;color:#fff;}' +\n    '.name{font-size:16px;font-weight:700;color:#1f2329;line-height:1.45;}' +\n    '.tag{font-size:12.5px;font-weight:600;color:#a11d21;}' +\n    '.new{position:absolute;top:14px;right:14px;padding:2px 8px;border-radius:999px;background:#a11d21;color:#fff;font-size:11px;font-weight:700;letter-spacing:1px;}' +\n    \/* \u8a73\u7d30\u9762\u677f *\/\n    '.collapse{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease;}' +\n    '.collapse.show{grid-template-rows:1fr;}' +\n    '.collapse .inner{overflow:hidden;min-height:0;}' +\n    '.panel{margin-top:16px;padding:24px;border:1px solid #1976d2;border-radius:14px;background:#f7fbff;' +\n      'display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:28px;align-items:start;}' +\n    '.map a{display:block;border-radius:10px;overflow:hidden;border:1px solid #e3e8ef;background:#fff;}' +\n    '.map img{display:block;width:100%;height:auto;max-height:520px;object-fit:contain;transition:transform .3s;}' +\n    '.map a:hover img{transform:scale(1.02);}' +\n    '.map-hint{margin-top:6px;font-size:12.5px;color:#8a8f98;text-align:center;}' +\n    '.map-tbd{display:flex;align-items:center;justify-content:center;min-height:260px;border:2px dashed #cdd6e1;border-radius:10px;' +\n      'background:#fff;color:#9aa0a8;font-size:15px;font-weight:600;}' +\n    '.info{display:flex;flex-direction:column;gap:14px;}' +\n    '.info-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;}' +\n    '.p-name{margin:0;font-size:22px;font-weight:700;color:#1f2329;line-height:1.45;}' +\n    '.p-sub{margin:2px 0 0;font-size:14px;color:#8a8f98;line-height:1.5;}' +\n    '.x{flex-shrink:0;border:1px solid #d6dde6;background:#fff;color:#6b7280;border-radius:999px;padding:5px 12px;font-size:13px;' +\n      'font-weight:600;cursor:pointer;font-family:inherit;}' +\n    '.x:hover{background:#eef3f8;}' +\n    '.who{padding:12px 14px;border-radius:10px;background:#fff;border:1px solid #e3e8ef;}' +\n    '.k{font-size:12.5px;font-weight:700;color:#1976d2;letter-spacing:.5px;margin-bottom:4px;}' +\n    '.who .v{font-size:15px;font-weight:600;color:#1f2329;line-height:1.6;}' +\n    '.desc{margin:0;font-size:15px;line-height:1.9;color:#333;text-align:justify;}' +\n    '.more{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;padding:10px 18px;border-radius:8px;' +\n      'background:#a11d21;color:#fff;text-decoration:none;font-size:14px;font-weight:600;transition:opacity .2s;}' +\n    '.more:hover{opacity:.88;}' +\n    \/* \u5e73\u677f *\/\n    '@media (max-width:1024px){' +\n      '.grid{grid-template-columns:repeat(3,minmax(0,1fr));}' +\n      '.card[aria-expanded=\"true\"]::after{display:none;}' +\n    '}' +\n    \/* \u624b\u6a5f *\/\n    '@media (max-width:760px){' +\n      '.head{margin-bottom:20px;}' +\n      '.title{font-size:25px;}' +\n      '.eyebrow::before,.eyebrow::after{width:40px;}' +\n      '.lang{position:static;margin-top:12px;}' +\n      '.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}' +\n      '.card{padding:14px 12px 12px;}' +\n      '.name{font-size:14.5px;}' +\n      '.new{top:12px;right:10px;}' +\n      '.panel{grid-template-columns:1fr;padding:16px;gap:18px;}' +\n      '.p-name{font-size:19px;}' +\n      '.more{align-self:stretch;justify-content:center;}' +\n      '.map-tbd{min-height:180px;}' +\n    '}';\n  \/\/ ------------------------------------------------------------\n  \/\/ 3. \u7e6a\u88fd\n  \/\/ ------------------------------------------------------------\n  var EXT = '<svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"\/><polyline points=\"15 3 21 3 21 9\"\/><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"\/><\/svg>';\n  var lang = \"zh\";\n  var openIdx = 0;   \/\/ \u9810\u8a2d\u6253\u958b\u7b2c 1 \u500b\u5b78\u7a0b\uff08\u4eba\u5de5\u667a\u6167\u63a2\u7d22\u61c9\u7528\uff09\uff1b\u6539\u6210 -1 \u5247\u9810\u8a2d\u5168\u90e8\u6536\u5408\n  function panelHTML(i) {\n    var p = PROGRAMS[i], t = p[lang], ui = UI[lang];\n    var other = lang === \"zh\" ? p.en.name : p.zh.name;\n    var src = p.map;\n    if (lang === \"en\") { if (p.mapEn) src = p.mapEn; }\n    var map = src\n      ? '<a href=\"' + src + '\" target=\"_blank\" rel=\"noopener\"><' + 'img src=\"' + src + '\" alt=\"' + t.name + (lang === \"en\" ? \" course map\" : \"\u8ab2\u7a0b\u5730\u5716\") + '\" loading=\"lazy\"><\/a>' +\n        '<div class=\"map-hint\">' + ui.mapHint + \"<\/div>\"\n      : '<div class=\"map-tbd\">' + ui.mapTbd + \"<\/div>\";\n    return (\n      '<div class=\"panel\" id=\"taicaProgPanel\" role=\"region\">' +\n        '<div class=\"map\">' + map + \"<\/div>\" +\n        '<div class=\"info\">' +\n          '<div class=\"info-top\"><div><h3 class=\"p-name\">' + t.name + '<\/h3><p class=\"p-sub\">' + other + \"<\/p><\/div>\" +\n            '<button class=\"x\" type=\"button\" data-close>' + ui.close + \"<\/button><\/div>\" +\n          '<div class=\"who\"><div class=\"k\">' + ui.who + '<\/div><div class=\"v\">' + t.who + \"<\/div><\/div>\" +\n          '<div><div class=\"k\">' + ui.desc + '<\/div><p class=\"desc\">' + t.desc + \"<\/p><\/div>\" +\n          '<a class=\"more\" href=\"' + p.link + '\" target=\"_blank\" rel=\"noopener\">' + ui.more + EXT + \"<\/a>\" +\n        \"<\/div>\" +\n      \"<\/div>\"\n    );\n  }\n  function render() {\n    var ui = UI[lang];\n    var cards = PROGRAMS.map(function (p, i) {\n      var t = p[lang];\n      return (\n        '<button class=\"card\" type=\"button\" data-i=\"' + i + '\" aria-expanded=\"' + (openIdx === i) + '\" aria-controls=\"taicaProgPanel\">' +\n          '<span class=\"no\">' + (\"0\" + (i + 1)) + \"<\/span>\" +\n          (p.isNew ? '<span class=\"new\">NEW<\/span>' : \"\") +\n          '<span class=\"name\">' + t.name + \"<\/span>\" +\n          '<span class=\"tag\">' + t.tag + \"<\/span>\" +\n        \"<\/button>\"\n      );\n    }).join(\"\");\n    ROOT.innerHTML =\n      \"<style>\" + CSS + \"<\/style>\" +\n      '<div class=\"wrap\" lang=\"' + (lang === \"zh\" ? \"zh-TW\" : \"en\") + '\">' +\n        '<div class=\"head\">' +\n          '<div class=\"eyebrow\">TAICA\u00d7TKU<\/div>' +\n          '<h2 class=\"title\">' + ui.title + \"<\/h2>\" +\n          '<p class=\"sub\">' + ui.sub + \"<\/p>\" +\n          '<div class=\"lang\" role=\"group\" aria-label=\"Language\">' +\n            '<button type=\"button\" data-lang=\"zh\" aria-pressed=\"' + (lang === \"zh\") + '\">\u4e2d\u6587<\/button>' +\n            '<button type=\"button\" data-lang=\"en\" aria-pressed=\"' + (lang === \"en\") + '\">EN<\/button>' +\n          \"<\/div>\" +\n        \"<\/div>\" +\n        '<div class=\"grid\">' + cards + \"<\/div>\" +\n        '<div class=\"collapse' + (openIdx !== -1 ? \" show\" : \"\") + '\" id=\"taicaProgCollapse\"><div class=\"inner\">' +\n          (openIdx !== -1 ? panelHTML(openIdx) : \"\") +\n        \"<\/div><\/div>\" +\n      \"<\/div>\";\n  }\n  function open(i, fromClick) {\n    var wasOpen = openIdx !== -1;\n    openIdx = i;\n    render();\n    if (i === -1) return;\n    \/\/ \u7b2c\u4e00\u6b21\u6253\u958b\u6642\u64ad\u653e\u5c55\u958b\u52d5\u756b\n    if (!wasOpen) {\n      var col = ROOT.getElementById(\"taicaProgCollapse\");\n      col.classList.remove(\"show\");\n      void col.offsetHeight;\n      col.classList.add(\"show\");\n    }\n    if (fromClick) {\n      if (window.matchMedia(\"(max-width: 1024px)\").matches) {\n        setTimeout(function () {\n          var pn = ROOT.getElementById(\"taicaProgPanel\");\n          if (pn) pn.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\n        }, 320);\n      }\n    }\n  }\n  ROOT.addEventListener(\"click\", function (e) {\n    var card = e.target.closest(\".card\");\n    if (card) {\n      var i = Number(card.getAttribute(\"data-i\"));\n      open(openIdx === i ? -1 : i, true);\n      var again = ROOT.querySelector('.card[data-i=\"' + i + '\"]');\n      if (again) again.focus({ preventScroll: true });\n      return;\n    }\n    if (e.target.closest(\"[data-close]\")) {\n      var prev = openIdx;\n      open(-1);\n      var c = ROOT.querySelector('.card[data-i=\"' + prev + '\"]');\n      if (c) c.focus({ preventScroll: true });\n      return;\n    }\n    var lb = e.target.closest(\".lang button\");\n    if (lb) {\n      lang = lb.getAttribute(\"data-lang\");\n      render();\n    }\n  });\n  render();\n})();\n<\/script>\n\n\n\n<!-- ============================================================\n  115\u5b78\u5e74\u5ea6\u4e0a\u5b78\u671f TAICA \u9078\u8ab2\u8aaa\u660e\uff0b\u4e3b\u5c0e\u8ab2\u7a0b\u6e05\u55ae\uff08\u6e05\u55ae\uff0b\u9ede\u64ca\u5c55\u958b\u7248\uff09\n  \u8ab2\u7a0b\u6b04\u4f4d\u6bd4\u7167 TAICA \u5b98\u7db2 https:\/\/taicatw.net\/fall-115\/ \u5be6\u969b\u5217\u51fa\u7684\u5167\u5bb9\uff1b\n  \u53e6\u52a0\u300ctku\u300d\u6b04\u4f4d\uff1d\u672c\u6821\u958b\u8ab2\u5f62\u5f0f\uff08\u93e1\u50cf\uff0f\u885b\u661f\uff09\uff0c\u4f9d\u672c\u6821 115-1 \u958b\u8ab2\u6e05\u55ae\u586b\u5beb\u3002\n  \u9078\u8ab2\u8aaa\u660e\u7684\u6587\u5b57\u8207\u9023\u7d50\u96c6\u4e2d\u5728\u4e0b\u65b9 INTRO \u5340\uff0c\u63db\u5b78\u671f\u6642\u4e00\u4f75\u6aa2\u67e5\u3002\n  \u8aaa\u660e\uff1a\u672c\u9801\u9762\u9396\u5728 Shadow DOM \u5167\uff0c\u4e0d\u6703\u53d7\u5916\u90e8 WordPress \u6a23\u5f0f\u5f71\u97ff\uff0c\u4e5f\u4e0d\u6703\u6c61\u67d3\u5916\u90e8\u9801\u9762\u6a23\u5f0f\u3002\n  \u7dad\u8b77\u65b9\u5f0f\uff1a\u4e4b\u5f8c\u82e5\u8981\u66f4\u65b0\u5b78\u671f\u8cc7\u6599\uff0c\u53ea\u9700\u8981\u4fee\u6539\u4e0b\u65b9 <script> \u5167\u7684 COURSES \u9663\u5217\u5373\u53ef\uff0c\u4e0d\u7528\u6539\u7248\u9762\u7d50\u69cb\u3002\n  \u30fbserial\uff1a\u672c\u6821\u958b\u8ab2\u5e8f\u865f\uff08\u6e05\u55ae\u7b2c\u4e00\u6b04\u986f\u793a\uff0c\u4e26\u53ef\u4e00\u9375\u8907\u88fd\uff09\uff0c\u63db\u5b78\u671f\u6642\u52d9\u5fc5\u66f4\u65b0\u3002\n============================================================ -->\n<!-- \u9032\u5834\u52d5\u756b\uff1a\u642d\u914d\u9801\u9762\u6700\u4e0b\u65b9\u7684\u300c\u52d5\u756b\u63a7\u5236\u5668\u300d\uff0c\u6372\u5230\u672c\u5340\u584a\u6642\u64ad\u653e\u4e00\u6b21 -->\n<div id=\"taica115Host\" data-anim data-anim-ms=\"1900\"><\/div>\n\n<script>\n(function () {\n  \"use strict\";\n\n  var HOST = document.getElementById(\"taica115Host\");\n  if (!HOST || HOST.shadowRoot) return;\n  var ROOT = HOST.attachShadow({ mode: \"open\" });\n\n  \/\/ ------------------------------------------------------------\n  \/\/ 1. \u8cc7\u6599\u5340\uff1a\u5167\u5bb9\u6bd4\u7167 TAICA \u5b98\u7db2 fall-115 \u9801\u9762\u5be6\u969b\u5217\u51fa\u7684\u6b04\u4f4d\n  \/\/ ------------------------------------------------------------\n  var COURSES = [\n    {\n      serial: \"8229\",   \/\/ \u958b\u8ab2\u5e8f\u865f\uff08\u5b78\u751f\u65bc\u9078\u8ab2\u7cfb\u7d71\u8f38\u5165\u6b64\u865f\u78bc\u52a0\u9078\uff09\n      tku: \"\u93e1\u50cf\u8ab2\u7a0b\",   \/\/ \u672c\u6821\u958b\u8ab2\u5f62\u5f0f\n      zh: \"\u8cc7\u6599\u63a2\u52d8\u8207\u61c9\u7528\",\n      en: \"Data Mining: Concepts, Techniques, and Applications\",\n      school: \"\u570b\u7acb\u6e05\u83ef\u5927\u5b78\",\n      teachers: \"\u9673\u5b9c\u6b23\",\n      lang: \"\u82f1\u6587\",\n      level: \"\u7814\u7a76\u6240\u8ab2\u7a0b\uff08\u958b\u653e\u5927\u4e09\u542b\u4ee5\u4e0a\u9078\u8ab2\uff09\",\n      courseType: \"\u93e1\u50cf\u8ab2\u7a0b\",\n      difficulty: 7,\n      programs: [\n        \"\u4eba\u5de5\u667a\u6167\u5de5\u696d\u61c9\u7528\u5b78\u5206\u5b78\u7a0b\uff08\u8cc7\u6599\u63a2\u52d8\u8207\u61c9\u7528\uff09\",\n        \"\u4eba\u5de5\u667a\u6167\u81ea\u7136\u8a9e\u8a00\u6280\u8853\u5b78\u5206\u5b78\u7a0b\uff08\u8cc7\u6599\u63a2\u52d8\u8207\u61c9\u7528\uff09\"\n      ],\n      classTime: \"\u661f\u671f\u4e00 9:00\u201312:00\",\n      keyDatesLabel: \"\u540c\u6b65\u8003\u8a66\u6642\u9593\uff08\u5be6\u9ad4\uff09\",\n      keyDates: \"2026\/12\/14\",\n      remoteLink: \"https:\/\/www.youtube.com\/@NTHU_ISA5810_DataMining\",\n      courseSite: \"https:\/\/www.cs.nthu.edu.tw\/~yishin\/courses\/ISA5810\/ISA5810-2026.html\",\n      syllabusUrl: \"https:\/\/drive.google.com\/file\/d\/1pfOn3zangUBZB7dxpfzjzcADF9nSbYL6\/view\"\n    },\n    {\n      serial: \"1523\",   \/\/ \u958b\u8ab2\u5e8f\u865f\uff08\u5b78\u751f\u65bc\u9078\u8ab2\u7cfb\u7d71\u8f38\u5165\u6b64\u865f\u78bc\u52a0\u9078\uff09\n      tku: \"\u885b\u661f\u8ab2\u7a0b\",   \/\/ \u672c\u6821\u958b\u8ab2\u5f62\u5f0f\n      zh: \"\u57fa\u790e\u7a0b\u5f0f\u8a2d\u8a08(C++)\",\n      en: \"Introduction to Programming (C++)\",\n      school: \"\u570b\u7acb\u967d\u660e\u4ea4\u901a\u5927\u5b78\",\n      teachers: \"\u6e29\u5b8f\u658c\",\n      lang: \"\u4e2d\u6587\",\n      level: \"\u5927\u5b78\u90e8\u8ab2\u7a0b\",\n      courseType: \"\u885b\u661f\u8ab2\u7a0b\",\n      difficulty: 3,\n      programs: [\"\u4eba\u5de5\u667a\u6167\u63a2\u7d22\u61c9\u7528\u5b78\u5206\u5b78\u7a0b\uff08\u7a0b\u5f0f\u8a2d\u8a08\uff09\"],\n      classTime: \"\u661f\u671f\u4e00 9:00\u201312:00\",\n      keyDatesLabel: \"\u540c\u6b65\u8003\u8a66\u6642\u9593\uff08\u5be6\u9ad4\uff09\",\n      keyDates: \"\u671f\u4e2d\u8003\uff1a2026\/11\/02 9:00\u201312:00\\n\u671f\u672b\u8003\uff1a2026\/12\/21 9:00\u201312:00\",\n      remoteLink: \"https:\/\/cool.ntu.edu.tw\/login\/portal\uff08NTU COOL\uff0c\u6bcf\u9031\u66f4\u65b0\uff09\",\n      courseSite: \"\",\n      syllabusUrl: \"https:\/\/drive.google.com\/file\/d\/1r8a1AbPYt-F5kNZYRwDv0yGozODB8ywv\/view\"\n    },\n    {\n      serial: \"1512\",   \/\/ \u958b\u8ab2\u5e8f\u865f\uff08\u5b78\u751f\u65bc\u9078\u8ab2\u7cfb\u7d71\u8f38\u5165\u6b64\u865f\u78bc\u52a0\u9078\uff09\n      tku: \"\u93e1\u50cf\u8ab2\u7a0b\",   \/\/ \u672c\u6821\u958b\u8ab2\u5f62\u5f0f\n      zh: \"\u4eba\u5de5\u667a\u6167\u5c0e\u8ad6\",\n      en: \"Introduction to Artificial Intelligence\",\n      school: \"\u570b\u7acb\u6210\u529f\u5927\u5b78\",\n      teachers: \"\u6731\u5a01\u9054\",\n      lang: \"\u4e2d\u6587\",\n      level: \"\u5927\u5b78\u90e8\u8ab2\u7a0b\",\n      courseType: \"\u6df7\u6210\u5f0f\uff1a\u93e1\u50cf\u8ab2\u7a0b, \u885b\u661f\u8ab2\u7a0b\",\n      difficulty: 4,\n      programs: [\n        \"\u4eba\u5de5\u667a\u6167\u63a2\u7d22\u61c9\u7528\u5b78\u5206\u5b78\u7a0b\uff08\u4eba\u5de5\u667a\u6167\u5c0e\u8ad6\uff09\",\n        \"\u4eba\u5de5\u667a\u6167\u81ea\u7136\u8a9e\u8a00\u6280\u8853\u5b78\u5206\u5b78\u7a0b\uff08\u4eba\u5de5\u667a\u6167\u5c0e\u8ad6\uff09\"\n      ],\n      classTime: \"\u661f\u671f\u56db 13:10\u201316:00\",\n      keyDatesLabel: \"\u540c\u6b65\u8003\u8a66\u6642\u9593\uff08\u5be6\u9ad4\uff09\",\n      keyDates: \"2026\/12\/10 13:10\u201316:00\uff08\u6240\u6709\u5b78\u751f\u9700\u540c\u6b65\u9032\u884c\uff0c\u5728\u6b64\u6642\u6bb5\u7121\u6cd5\u61c9\u8003\u7684\u5b78\u751f\u8acb\u52ff\u4fee\u8ab2\uff09\",\n      remoteLink: \"https:\/\/www.youtube.com\/@WeiTaChu\",\n      courseSite: \"https:\/\/mmcv.csie.ncku.edu.tw\/~wtchu\/courses\/2025f_AI\/index.html\",\n      syllabusUrl: \"https:\/\/drive.google.com\/file\/d\/1O-LjaMceSVCnJ1uIYfptRYLzRt--M6W7\/view\"\n    },\n    {\n      serial: \"8246\",   \/\/ \u958b\u8ab2\u5e8f\u865f\uff08\u5b78\u751f\u65bc\u9078\u8ab2\u7cfb\u7d71\u8f38\u5165\u6b64\u865f\u78bc\u52a0\u9078\uff09\n      tku: \"\u93e1\u50cf\u8ab2\u7a0b\",   \/\/ \u672c\u6821\u958b\u8ab2\u5f62\u5f0f\n      zh: \"\u91d1\u878d\u79d1\u6280\u5c0e\u8ad6\",\n      en: \"Introduction to FinTech\",\n      school: \"\u570b\u7acb\u81fa\u7063\u5927\u5b78\",\n      teachers: \"\u5f35\u667a\u661f\u3001\u9673\u541b\u660e\",\n      lang: \"\u4e2d\u6587\",\n      level: \"\u7814\u7a76\u6240\u8ab2\u7a0b\",\n      courseType: \"\u93e1\u50cf\u8ab2\u7a0b\",\n      difficulty: 6,\n      programs: [\"\u4eba\u5de5\u667a\u6167\u63a2\u7d22\u61c9\u7528\u5b78\u5206\u5b78\u7a0b\uff08\u4eba\u5de5\u667a\u6167\u61c9\u7528\u8ab2\u7a0b\uff09\"],\n      classTime: \"\u661f\u671f\u4e09 9:10\u201312:10\",\n      keyDatesLabel: \"\u540c\u6b65\u8003\u8a66\u6642\u9593\uff08\u5be6\u9ad4\uff09\",\n      keyDates: \"2026\/12\/23 9:10\u201312:10\",\n      remoteLink: \"https:\/\/ntucc.webex.com\/meet\/rogerjang\",\n      courseSite: \"http:\/\/mirlab.org\/jang\/courses\/fintech\",\n      syllabusUrl: \"https:\/\/drive.google.com\/file\/d\/1Hyu2qw1DKTj5VwwKCD_DgvQLhDZSn0Xj\/view\"\n    },\n    {\n      serial: \"1633\",   \/\/ \u958b\u8ab2\u5e8f\u865f\uff08\u5b78\u751f\u65bc\u9078\u8ab2\u7cfb\u7d71\u8f38\u5165\u6b64\u865f\u78bc\u52a0\u9078\uff09\n      tku: \"\u885b\u661f\u8ab2\u7a0b\",   \/\/ \u672c\u6821\u958b\u8ab2\u5f62\u5f0f\n      zh: \"\u7d71\u8a08\u5b78\u66a8\u5be6\u7fd2\",\n      en: \"Statistics with Recitation\",\n      school: \"\u570b\u7acb\u81fa\u7063\u5927\u5b78\",\n      teachers: \"\u674e\u5b97\u7a4e\",\n      lang: \"\u82f1\u6587\",\n      level: \"\u5927\u5b78\u90e8\u8ab2\u7a0b\",\n      courseType: \"\u885b\u661f\u8ab2\u7a0b\",\n      difficulty: 3,\n      programs: [\"\u4eba\u5de5\u667a\u6167\u5de5\u696d\u61c9\u7528\u5b78\u5206\u5b78\u7a0b\uff08\u7d71\u8a08\uff09\"],\n      classTime: \"\u661f\u671f\u4e09 9:10\u201312:10\",\n      keyDatesLabel: \"\u540c\u6b65\u8003\u8a66\u6642\u9593\uff08\u5be6\u9ad4\uff09\",\n      keyDates: \"\u671f\u4e2d\u8003\uff1a2026\/10\/28\uff08\u4e09\uff099:30\u201312:00\\n\u671f\u672b\u8003\uff1a2026\/12\/23\uff08\u4e09\uff099:30\u201312:00\",\n      remoteLink: \"https:\/\/cool.ntu.edu.tw\/login\/portal\uff08NTU COOL\uff09\",\n      courseSite: \"\",\n      syllabusUrl: \"https:\/\/drive.google.com\/file\/d\/1wVa_Cg0GziX-djcJdWddMuMVcAh4v27H\/view\"\n    },\n    {\n      serial: \"8230\",   \/\/ \u958b\u8ab2\u5e8f\u865f\uff08\u5b78\u751f\u65bc\u9078\u8ab2\u7cfb\u7d71\u8f38\u5165\u6b64\u865f\u78bc\u52a0\u9078\uff09\n      tku: \"\u93e1\u50cf\u8ab2\u7a0b\",   \/\/ \u672c\u6821\u958b\u8ab2\u5f62\u5f0f\n      zh: \"\u667a\u6167\u4eba\u6a5f\u4e92\u52d5\",\n      en: \"Human-AI Interaction\",\n      school: \"\u570b\u7acb\u81fa\u5317\u79d1\u6280\u5927\u5b78\",\n      teachers: \"\u97d3\u79c9\u8ed2\",\n      lang: \"\u4e2d\u6587\",\n      level: \"\u7814\u7a76\u6240\u8ab2\u7a0b\uff08\u958b\u653e\u5927\u4e09\u542b\u4ee5\u4e0a\u9078\u8ab2\uff09\",\n      courseType: \"\u6df7\u6210\u5f0f\uff1a\u93e1\u50cf\u8ab2\u7a0b, \u885b\u661f\u8ab2\u7a0b\",\n      difficulty: 6,\n      programs: [\"\u4eba\u5de5\u667a\u6167\u81ea\u7136\u8a9e\u8a00\u6280\u8853\u5b78\u5206\u5b78\u7a0b\uff08\u667a\u6167\u4eba\u6a5f\u4e92\u52d5\uff09\"],\n      classTime: \"\u661f\u671f\u56db 13:10\u201316:00\",\n      keyDatesLabel: \"\u5171\u540c\u5c55\u793a\u4ea4\u6d41\u671f\u672b\u6210\u679c\",\n      keyDates: \"2026\/12\/26\",\n      remoteLink: \"https:\/\/www.youtube.com\/@xrlabntut0411\",\n      courseSite: \"https:\/\/sites.google.com\/view\/human-ai-interaction\",\n      syllabusUrl: \"https:\/\/drive.google.com\/file\/d\/1MaCJkrg-HBPeD1rVHnOt5FrL68jsEB9B\/view\"\n    },\n    {\n      serial: \"8228\",   \/\/ \u958b\u8ab2\u5e8f\u865f\uff08\u5b78\u751f\u65bc\u9078\u8ab2\u7cfb\u7d71\u8f38\u5165\u6b64\u865f\u78bc\u52a0\u9078\uff09\n      tku: \"\u93e1\u50cf\u8ab2\u7a0b\",   \/\/ \u672c\u6821\u958b\u8ab2\u5f62\u5f0f\n      zh: \"\u81ea\u7136\u8a9e\u8a00\u8655\u7406\",\n      en: \"Natural Language Processing\",\n      school: \"\u570b\u7acb\u6e05\u83ef\u5927\u5b78\",\n      teachers: \"\u9ad8\u5b8f\u5b87\",\n      lang: \"\u4e2d\u6587\",\n      level: \"\u7814\u7a76\u6240\u8ab2\u7a0b\",\n      courseType: \"\u93e1\u50cf\u8ab2\u7a0b\",\n      difficulty: 8,\n      programs: [\"\u4eba\u5de5\u667a\u6167\u81ea\u7136\u8a9e\u8a00\u6280\u8853\u5b78\u5206\u5b78\u7a0b\uff08\u81ea\u7136\u8a9e\u8a00\u8655\u7406\uff09\"],\n      classTime: \"\u661f\u671f\u56db 9:00\u201312:00\",\n      keyDatesLabel: \"\",\n      keyDates: \"\",\n      remoteLink: \"https:\/\/cool.ntu.edu.tw\/courses\/41436\/modules\uff08\u6bcf\u9031\u66f4\u65b0\uff09\",\n      courseSite: \"https:\/\/github.com\/IKMLab\/NTHU_Natural_Language_Processing\",\n      syllabusUrl: \"https:\/\/drive.google.com\/file\/d\/1XHyNRHTGJPPpru90WbciVdDMrT-fFU7u\/view\"\n    },\n    {\n      serial: \"8242\",   \/\/ \u958b\u8ab2\u5e8f\u865f\uff08\u5b78\u751f\u65bc\u9078\u8ab2\u7cfb\u7d71\u8f38\u5165\u6b64\u865f\u78bc\u52a0\u9078\uff09\n      tku: \"\u93e1\u50cf\u8ab2\u7a0b\",   \/\/ \u672c\u6821\u958b\u8ab2\u5f62\u5f0f\n      zh: \"\u6a5f\u5668\u5b78\u7fd2\",\n      en: \"Machine Learning\",\n      school: \"\u570b\u7acb\u81fa\u7063\u5927\u5b78\",\n      teachers: \"\u6797\u8ed2\u7530\",\n      lang: \"\u4e2d\u6587\",\n      level: \"\u7814\u7a76\u6240\u8ab2\u7a0b\uff08\u539f\u5247\u51c6\u8a31\u5927\u4e09\u4ee5\u4e0a\u540c\u5b78\u4fee\u7fd2\uff09\",\n      courseType: \"\u93e1\u50cf\u8ab2\u7a0b\",\n      difficulty: 8,\n      programs: [\n        \"\u4eba\u5de5\u667a\u6167\u5de5\u696d\u61c9\u7528\u5b78\u5206\u5b78\u7a0b\uff08\u6a5f\u5668\u5b78\u7fd2\uff09\",\n        \"\u4eba\u5de5\u667a\u6167\u8996\u89ba\u6280\u8853\u5b78\u5206\u5b78\u7a0b\uff08\u6a5f\u5668\u5b78\u7fd2\uff09\"\n      ],\n      classTime: \"\u661f\u671f\u4e09 09:10\u201312:10\",\n      keyDatesLabel: \"\u540c\u6b65\u8003\u8a66\u6642\u9593\uff08\u5be6\u9ad4\uff09\",\n      keyDates: \"2026\/12\/09\",\n      remoteLink: \"https:\/\/www.youtube.com\/@hsuantien\",\n      courseSite: \"\",\n      syllabusUrl: \"https:\/\/drive.google.com\/file\/d\/1f2oHaXBN_2lGORbKmJDGZRUm6DOu8b6v\/view\"\n    },\n    {\n      serial: \"8241\",   \/\/ \u958b\u8ab2\u5e8f\u865f\uff08\u5b78\u751f\u65bc\u9078\u8ab2\u7cfb\u7d71\u8f38\u5165\u6b64\u865f\u78bc\u52a0\u9078\uff09\n      tku: \"\u885b\u661f\u8ab2\u7a0b\",   \/\/ \u672c\u6821\u958b\u8ab2\u5f62\u5f0f\n      zh: \"\u751f\u6210\u5f0fAI\uff1a\u6587\u5b57\u8207\u5716\u50cf\u751f\u6210\u7684\u539f\u7406\u8207\u5be6\u52d9\",\n      en: \"Generative AI: Text and Image Synthesis Principles and Practice\",\n      school: \"\u570b\u7acb\u653f\u6cbb\u5927\u5b78\",\n      teachers: \"\u8521\u708e\u9f8d\",\n      lang: \"\u4e2d\u6587\",\n      level: \"\u5927\u5b78\u90e8\u3001\u7814\u7a76\u6240\u8ab2\u7a0b\",\n      courseType: \"\u885b\u661f\u8ab2\u7a0b\",\n      difficulty: 2,\n      programs: [\n        \"\u4eba\u5de5\u667a\u6167\u81ea\u7136\u8a9e\u8a00\u6280\u8853\u5b78\u5206\u5b78\u7a0b\uff08\u751f\u6210\u5f0f\u4eba\u5de5\u667a\u6167\u5c0e\u8ad6\uff09\",\n        \"\u4eba\u5de5\u667a\u6167\u63a2\u7d22\u61c9\u7528\u5b78\u5206\u5b78\u7a0b\uff08\u751f\u6210\u5f0f\u4eba\u5de5\u667a\u6167\u5c0e\u8ad6\uff09\"\n      ],\n      classTime: \"\u661f\u671f\u4e8c 16:00\u201319:00\",\n      keyDatesLabel: \"\u671f\u672b\u5c08\u984c\u6210\u679c\u5206\u4eab\uff08\u7dda\u4e0a\uff09\",\n      keyDates: \"2026\/12\/22\",\n      remoteLink: \"Facebook\u3010\u653f\u5927\u61c9\u6578\u7cfb\u76f4\u64ad\u4e2d\u5fc3\u3011\uff1ahttps:\/\/facebook.com\/groups\/nccumathonline\/\\nYouTube\u3010Iveai \u2013 I've AI\u3011\uff1ahttps:\/\/www.youtube.com\/@ive-iveai\",\n      courseSite: \"\",\n      syllabusUrl: \"https:\/\/drive.google.com\/file\/d\/1hhigEPT9SdhJgtIpevACzSJsSNA0mw6T\/view\"\n    },\n    {\n      serial: \"8526\",   \/\/ \u958b\u8ab2\u5e8f\u865f\uff08\u5b78\u751f\u65bc\u9078\u8ab2\u7cfb\u7d71\u8f38\u5165\u6b64\u865f\u78bc\u52a0\u9078\uff09\n      tku: \"\u885b\u661f\u8ab2\u7a0b\",   \/\/ \u672c\u6821\u958b\u8ab2\u5f62\u5f0f\n      zh: \"\u5be6\u9ad4\u4eba\u5de5\u667a\u6167\",\n      en: \"Physical AI\",\n      school: \"\u570b\u7acb\u967d\u660e\u4ea4\u901a\u5927\u5b78\",\n      teachers: \"\u9673\u5955\u5ef7\",\n      lang: \"\u82f1\u6587\",\n      level: \"\u7814\u7a76\u6240\uff08\u5927\u5b78\u90e8\u56db\u5e74\u7d1a\u4ee5\u4e0a\u4fee\u8b80\uff09\",\n      courseType: \"\u885b\u661f\u8ab2\u7a0b\",\n      difficulty: 8,\n      programs: [\n        \"\u4eba\u5de5\u667a\u6167\u5de5\u696d\u61c9\u7528\u5b78\u5206\u5b78\u7a0b\uff08\u6a5f\u5668\u4eba\u5c08\u984c\uff09\",\n        \"\u4eba\u5de5\u667a\u6167\u8996\u89ba\u6280\u8853\u5b78\u5206\u5b78\u7a0b\uff08\u4eba\u5de5\u667a\u6167\u5f71\u50cf\u61c9\u7528\u8ab2\u7a0b\uff09\"\n      ],\n      classTime: \"\u661f\u671f\u4e8c 13:20\u201316:20\",\n      keyDatesLabel: \"\",\n      keyDates: \"\",\n      remoteLink: \"\u4f7f\u7528YouTube\u76f4\u64ad\",\n      courseSite: \"\",\n      syllabusUrl: \"https:\/\/drive.google.com\/file\/d\/1dgHk0w80-s-ujBbeAp1pk6O1oA0SRYp6\/view\"\n    }\n  ];\n\n  \/\/ ------------------------------------------------------------\n  \/\/ 2. \u5de5\u5177\u51fd\u5f0f\n  \/\/ ------------------------------------------------------------\n  function esc(str) {\n    return String(str == null ? \"\" : str).replace(\/[&<>\"']\/g, function (c) {\n      return { \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" }[c];\n    });\n  }\n  function nl2br(str) {\n    return esc(str).replace(\/\\n\/g, \"<br>\");\n  }\n  function linkify(str) {\n    var safe = esc(str);\n    safe = safe.replace(\/(https?:\\\/\\\/[^\\s<\uff08\uff09]+)\/g, function (m) {\n      return '<a class=\"inline-link\" href=\"' + m + '\" target=\"_blank\" rel=\"noopener\">' + m + \"<\/a>\";\n    });\n    return safe.replace(\/\\n\/g, \"<br>\");\n  }\n  function stars(n) {\n    return '<span class=\"on\">' + \"\u2605\".repeat(n) + '<\/span><span class=\"off\">' + \"\u2605\".repeat(Math.max(0, 8 - n)) + \"<\/span>\";\n  }\n  function searchBlob(c) {\n    return [c.serial, c.zh, c.en, c.school, c.teachers, c.programs.join(\" \"), c.level, c.lang, c.courseType, c.classTime]\n      .join(\" \").toLowerCase();\n  }\n\n  var CHEVRON =\n    '<svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"6 9 12 15 18 9\"><\/polyline><\/svg>';\n  var COPY_ICON =\n    '<svg viewBox=\"0 0 24 24\" width=\"15\" height=\"15\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"><\/rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"><\/path><\/svg>';\n  var EXTERNAL =\n    '<svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">' +\n    '<path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"><\/path>' +\n    '<polyline points=\"15 3 21 3 21 9\"><\/polyline><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"><\/line><\/svg>';\n\n  \/\/ ------------------------------------------------------------\n  \/\/ 3. \u7522\u751f\u6bcf\u4e00\u5217 HTML\n  \/\/ ------------------------------------------------------------\n  function kv(label, valueHTML, full) {\n    return '<div class=\"kv' + (full ? \" full\" : \"\") + '\"><div class=\"k\">' + esc(label) + '<\/div><div class=\"v\">' + valueHTML + \"<\/div><\/div>\";\n  }\n\n  function rowHTML(c, i) {\n    var id = \"taica-detail-\" + i;\n    var programsHTML = c.programs.map(function (p) {\n      return '<div class=\"program-line\">' + esc(p) + \"<\/div>\";\n    }).join(\"\");\n\n    var tkuHTML = c.tku === \"\u885b\u661f\u8ab2\u7a0b\"\n      ? '<span class=\"type-tag sat\">\u885b\u661f\u8ab2\u7a0b<\/span> <span class=\"type-note\">\u914d\u6709\u672c\u6821\u5354\u540c\u6559\u5e2b<\/span>'\n      : '<span class=\"type-tag mir\">' + esc(c.tku) + '<\/span>';\n\n    var details =\n      kv(\"\u6388\u8ab2\u6559\u5e2b\", esc(c.teachers)) +\n      kv(\"\u8ab2\u7a0b\u5c6c\u6027\", esc(c.level)) +\n      kv(\"\u5c0d\u61c9\u5b78\u7a0b\uff08\u8ab2\u540d\uff09\", '<div class=\"programs\">' + programsHTML + \"<\/div>\", true) +\n      kv(\"\u672c\u6821\u958b\u8ab2\u5f62\u5f0f\", tkuHTML) +\n      kv(\"\u76df\u6821\u8ab2\u7a0b\u578b\u614b\", esc(c.courseType)) +\n      kv(\"\u9060\u8ddd\u4e0a\u8ab2\u6642\u9593\", nl2br(c.classTime)) +\n      (c.keyDates ? kv(c.keyDatesLabel || \"\u91cd\u8981\u65e5\u671f\", nl2br(c.keyDates), true) : \"\") +\n      kv(\"\u9060\u8ddd\u4e0a\u8ab2\u4f4d\u7f6e\", linkify(c.remoteLink), true) +\n      (c.courseSite\n        ? kv(\"\u8ab2\u7a0b\u7db2\u9801\", '<a class=\"inline-link\" href=\"' + esc(c.courseSite) + '\" target=\"_blank\" rel=\"noopener\">' + esc(c.courseSite) + \"<\/a>\", true)\n        : \"\");\n\n    return (\n      '<li class=\"item\" data-search=\"' + esc(searchBlob(c)) + '\">' +\n        '<button class=\"row\" type=\"button\" aria-expanded=\"false\" aria-controls=\"' + id + '\">' +\n          '<span class=\"c-no\" title=\"\u958b\u8ab2\u5e8f\u865f\">' + esc(c.serial) + '<\/span>' +\n          '<span class=\"c-title\">' +\n            '<span class=\"zh\">' + esc(c.zh) + '<\/span>' +\n            '<span class=\"en\">' + esc(c.en) + '<\/span>' +\n          '<\/span>' +\n          '<span class=\"c-school\">' + esc(c.school) + '<\/span>' +\n          '<span class=\"c-time\">' + esc(c.classTime) + '<\/span>' +\n          '<span class=\"c-lang\"><span class=\"lang-tag\">' + esc(c.lang) + '<\/span><\/span>' +\n          '<span class=\"c-diff\" title=\"\u8ab2\u7a0b\u96e3\u5ea6 ' + c.difficulty + ' \/ 8\" aria-label=\"\u8ab2\u7a0b\u96e3\u5ea6 ' + c.difficulty + ' \/ 8\">' + stars(c.difficulty) + '<\/span>' +\n          '<span class=\"c-arrow\" aria-hidden=\"true\">' + CHEVRON + '<\/span>' +\n        '<\/button>' +\n        '<div class=\"panel\" id=\"' + id + '\" role=\"region\">' +\n          '<div class=\"panel-inner\">' +\n            '<div class=\"detail\">' +\n              '<div class=\"kv-grid\">' + details + '<\/div>' +\n              '<div class=\"actions\">' +\n                '<button class=\"copy-btn\" type=\"button\" data-serial=\"' + esc(c.serial) + '\">' + COPY_ICON + '<span>\u8907\u88fd\u958b\u8ab2\u5e8f\u865f ' + esc(c.serial) + '<\/span><\/button>' +\n                '<a class=\"link-btn\" href=\"' + esc(c.syllabusUrl) + '\" target=\"_blank\" rel=\"noopener\"><span>\u8ab2\u7a0b\u5927\u7db1<\/span>' + EXTERNAL + '<\/a>' +\n              '<\/div>' +\n            '<\/div>' +\n          '<\/div>' +\n        '<\/div>' +\n      '<\/li>'\n    );\n  }\n\n  \/\/ ------------------------------------------------------------\n  \/\/ 4. \u7248\u9762\u9aa8\u67b6 + \u6a23\u5f0f\uff08\u5168\u90e8\u5c01\u88dd\u65bc Shadow DOM \u5167\uff09\n  \/\/ ------------------------------------------------------------\n  ROOT.innerHTML =\n    '<style>' +\n    \/* ===== \u9032\u5834\u52d5\u756b\uff1a\u7531\u9801\u5c3e\u300c\u52d5\u756b\u63a7\u5236\u5668\u300d\u52a0\u4e0a class \u89f8\u767c\uff0c\u53ea\u64ad\u4e00\u6b21 ===== *\/\n    '@keyframes fadeUp{from{opacity:0;transform:translateY(18px);}to{opacity:1;transform:none;}}' +\n    '@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}' +\n    '@keyframes fadeLeft{from{opacity:0;transform:translateX(28px);}to{opacity:1;transform:none;}}' +\n    '@keyframes pop{0%{opacity:0;transform:scale(.6);}60%{opacity:1;transform:scale(1.1);}100%{opacity:1;transform:scale(1);}}' +\n    '@media (prefers-reduced-motion:no-preference){' +\n      ':host(.anim-ready:not(.is-in)) .sec-head,:host(.anim-ready:not(.is-in)) .info,:host(.anim-ready:not(.is-in)) .list-title,:host(.anim-ready:not(.is-in)) .toolbar,:host(.anim-ready:not(.is-in)) .note,:host(.anim-ready:not(.is-in)) .item{opacity:0;}' +\n      ':host(.is-in:not(.anim-done)) .sec-head{animation:fadeUp .6s ease-out both;}' +\n      ':host(.is-in:not(.anim-done)) .info{animation:fadeUp .5s cubic-bezier(.2,.7,.3,1) both;}' +\n      ':host(.is-in:not(.anim-done)) .info:nth-child(1){animation-delay:0.15s;}' +\n      ':host(.is-in:not(.anim-done)) .info:nth-child(2){animation-delay:0.25s;}' +\n      ':host(.is-in:not(.anim-done)) .info:nth-child(3){animation-delay:0.35s;}' +\n      ':host(.is-in:not(.anim-done)) .list-title{animation:fadeIn .5s ease-out .5s both;}' +\n      ':host(.is-in:not(.anim-done)) .toolbar{animation:fadeIn .5s ease-out .55s both;}' +\n      ':host(.is-in:not(.anim-done)) .note{animation:fadeIn .5s ease-out .6s both;}' +\n      ':host(.is-in:not(.anim-done)) .item{animation:fadeUp .45s ease-out both;}' +\n      ':host(.is-in:not(.anim-done)) .item:nth-child(1){animation-delay:0.65s;}' +\n      ':host(.is-in:not(.anim-done)) .item:nth-child(2){animation-delay:0.7s;}' +\n      ':host(.is-in:not(.anim-done)) .item:nth-child(3){animation-delay:0.75s;}' +\n      ':host(.is-in:not(.anim-done)) .item:nth-child(4){animation-delay:0.8s;}' +\n      ':host(.is-in:not(.anim-done)) .item:nth-child(5){animation-delay:0.85s;}' +\n      ':host(.is-in:not(.anim-done)) .item:nth-child(6){animation-delay:0.9s;}' +\n      ':host(.is-in:not(.anim-done)) .item:nth-child(7){animation-delay:0.95s;}' +\n      ':host(.is-in:not(.anim-done)) .item:nth-child(8){animation-delay:1s;}' +\n      ':host(.is-in:not(.anim-done)) .item:nth-child(9){animation-delay:1.05s;}' +\n      ':host(.is-in:not(.anim-done)) .item:nth-child(10){animation-delay:1.1s;}' +\n      ':host(.is-in:not(.anim-done)) .item:nth-child(n+11){animation-delay:1.15s;}' +\n    '}' +\n      ':host{all:initial;display:block;padding:40px 0;}@media (max-width:760px){:host{padding:28px 0;}}' +\n      '.taica-wrap{' +\n        'font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans TC\",\"Microsoft JhengHei\",sans-serif;' +\n        'color:#2b2b2b;max-width:1200px;margin:0 auto;padding:0;box-sizing:border-box;}' +\n      '.taica-wrap *{box-sizing:border-box;}' +\n\n      \/* \u5de5\u5177\u5217 *\/\n      '.toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:10px;}' +\n      '.search-box{flex:1 1 300px;position:relative;display:flex;align-items:center;}' +\n      '.search-icon{position:absolute;left:14px;color:#888;pointer-events:none;}' +\n      '.search-input{width:100%;padding:12px 12px 12px 42px;border:1px solid #ddd;border-radius:50px;' +\n        'font-size:15px;font-family:inherit;background:#fff;color:#2b2b2b;transition:all .2s ease;box-shadow:0 2px 4px rgba(0,0,0,.02);}' +\n      '.search-input:focus{outline:none;border-color:#4a90e2;box-shadow:0 0 0 3px rgba(74,144,226,.2);}' +\n      '.toggle-all{flex-shrink:0;padding:11px 18px;border:1px solid rgba(25,118,210,.25);border-radius:50px;background:#fff;' +\n        'color:#1976d2;font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .2s;}' +\n      '.toggle-all:hover{background:#e3f2fd;}' +\n      '.toggle-all:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(74,144,226,.3);}' +\n      '.note{font-size:13px;color:#888;margin-bottom:14px;}' +\n\n      \/* \u5927\u6a19\u984c *\/\n      '.sec-head{text-align:center;margin:0 0 28px;}' +\n      '.eyebrow{display:inline-flex;align-items:center;gap:14px;color:#a11d21;font-size:15px;letter-spacing:1px;}' +\n      '.eyebrow::before,.eyebrow::after{content:\"\";width:60px;height:6px;border-top:2px solid #a11d21;border-bottom:2px solid #a11d21;}' +\n      '.sec-title{margin:6px 0 0;font-size:30px;font-weight:700;color:#1f2329;letter-spacing:2px;line-height:1.4;}' +\n\n      \/* \u9078\u8ab2\u8aaa\u660e\u8cc7\u8a0a\u5361 *\/\n      '.intro{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:36px;}' +\n      '.info{border:1px solid #e8e8e8;border-radius:14px;background:#fff;padding:20px 20px 18px;' +\n        'box-shadow:0 2px 10px rgba(0,0,0,.04);display:flex;flex-direction:column;gap:10px;}' +\n      '.info-k{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:#1976d2;letter-spacing:.5px;}' +\n      '.info-k .dot{width:8px;height:8px;border-radius:50%;background:#1976d2;}' +\n      '.info.primary{border-color:rgba(161,29,33,.25);}' +\n      '.info.primary .info-k{color:#a11d21;}' +\n      '.info.primary .info-k .dot{background:#a11d21;}' +\n      '.info-v{font-size:15px;line-height:1.7;color:#333;flex:1;}' +\n      '.info-v a{color:#a11d21;font-weight:700;text-decoration:underline;text-underline-offset:3px;}' +\n      '.info-v a.blue{color:#1976d2;}' +\n      '.info-btn{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border-radius:8px;' +\n        'font-size:14px;font-weight:600;text-decoration:none;transition:background .2s,opacity .2s;}' +\n      '.info-btn.red{background:#a11d21;color:#fff;}' +\n      '.info-btn.red:hover{opacity:.88;}' +\n      '.info-btn.ghost{background:#fff;color:#1976d2;border:1px solid rgba(25,118,210,.25);}' +\n      '.info-btn.ghost:hover{background:#e3f2fd;}' +\n      '.type-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin-top:8px;}' +\n      '.type-tag{display:inline-block;padding:2px 10px;font-size:13px;border-radius:999px;font-weight:600;}' +\n      '.type-tag.mir{background:#eef1f5;color:#4a5361;}' +\n      '.type-tag.sat{background:#e3f2fd;color:#1976d2;}' +\n      '.type-note{font-size:13px;color:#666;}' +\n\n      \/* \u6e05\u55ae\u6a19\u984c *\/\n      '.list-title{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 16px;' +\n        'margin:0 0 14px;padding-left:12px;border-left:4px solid #a11d21;}' +\n      '.list-title h3{margin:0;font-size:20px;font-weight:700;color:#1f2329;}' +\n      '.src-link{display:inline-flex;align-items:center;gap:4px;font-size:14px;color:#1976d2;text-decoration:none;font-weight:500;}' +\n      '.src-link:hover{text-decoration:underline;}' +\n\n      \/* \u6e05\u55ae\u5916\u6846 *\/\n      '.list-box{border:1px solid #e8e8e8;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,.04);}' +\n      '.list-head,.row{display:grid;grid-template-columns:64px minmax(0,1fr) 150px 170px 64px 116px 28px;align-items:center;gap:12px;}' +\n      '.list-head{padding:10px 20px;background:#f7f9fc;border-bottom:1px solid #e8e8e8;font-size:12px;font-weight:600;color:#8a8f98;letter-spacing:.5px;}' +\n      '.list{list-style:none;margin:0;padding:0;}' +\n      '.item{border-bottom:1px solid #f0f0f0;}' +\n      '.item:last-child{border-bottom:none;}' +\n\n      \/* \u6bcf\u4e00\u5217\uff08\u53ef\u9ede\u64ca\uff09 *\/\n      '.row{width:100%;padding:14px 20px;border:none;background:transparent;text-align:left;cursor:pointer;' +\n        'font-family:inherit;color:inherit;font-size:14px;transition:background .18s ease;}' +\n      '.row:hover{background:#f7faff;}' +\n      '.row:focus-visible{outline:none;box-shadow:inset 0 0 0 2px rgba(74,144,226,.55);}' +\n      '.item.open .row{background:#f3f8fe;}' +\n      '.c-no{font-family:Consolas,\"SFMono-Regular\",Menlo,monospace;font-size:16px;font-weight:700;color:#1976d2;letter-spacing:1px;}' +\n      '.c-title{display:flex;flex-direction:column;min-width:0;}' +\n      '.zh{font-size:16px;font-weight:700;color:#1a1a1a;line-height:1.45;}' +\n      '.en{font-size:12.5px;color:#888;line-height:1.35;margin-top:1px;}' +\n      '.c-school{font-size:14px;color:#1976d2;font-weight:600;}' +\n      '.c-time{font-size:13.5px;color:#444;}' +\n      '.lang-tag{display:inline-block;padding:3px 8px;font-size:12px;border-radius:4px;background:#f0f2f5;color:#666;font-weight:500;}' +\n      '.c-diff{font-size:12.5px;letter-spacing:1px;white-space:nowrap;}' +\n      '.c-diff .on{color:#e0a030;}' +\n      '.c-diff .off{color:#e3e5e8;}' +\n      '.c-arrow{display:flex;justify-content:center;color:#9aa0a8;transition:transform .25s ease,color .2s;}' +\n      '.item.open .c-arrow{transform:rotate(180deg);color:#1976d2;}' +\n\n      \/* \u5c55\u958b\u5340\uff08grid 0fr \u2192 1fr \u505a\u5e73\u6ed1\u52d5\u756b\uff09 *\/\n      '.panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .28s ease;}' +\n      '.item.open .panel{grid-template-rows:1fr;}' +\n      '.panel-inner{overflow:hidden;min-height:0;}' +\n      '.detail{padding:6px 20px 22px 96px;display:flex;gap:24px;align-items:flex-start;background:#f3f8fe;}' +\n      '.kv-grid{flex:1;min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 24px;' +\n        'padding:18px 20px;background:#fff;border:1px solid #e6eef8;border-radius:10px;}' +\n      '.kv{min-width:0;}' +\n      '.kv.full{grid-column:1\/-1;}' +\n      '.k{font-size:12px;letter-spacing:.5px;color:#999;margin-bottom:4px;font-weight:600;}' +\n      '.v{font-size:14px;line-height:1.65;color:#333;word-break:break-word;}' +\n      '.programs{color:#c2185b;font-weight:500;}' +\n      '.program-line{margin-bottom:2px;}' +\n      '.program-line:last-child{margin-bottom:0;}' +\n      '.inline-link{color:#1976d2;text-decoration:underline;word-break:break-all;}' +\n      '.actions{flex-shrink:0;}' +\n      '.link-btn{display:flex;align-items:center;gap:6px;padding:10px 16px;border-radius:8px;' +\n        'background:#fff;color:#1976d2;text-decoration:none;font-size:14px;font-weight:600;' +\n        'border:1px solid rgba(25,118,210,.25);transition:background .2s;white-space:nowrap;}' +\n      '.link-btn:hover{background:#e3f2fd;}' +\n      '.actions{display:flex;flex-direction:column;gap:8px;}' +\n      '.copy-btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;border-radius:8px;border:none;cursor:pointer;' +\n        'background:#a11d21;color:#fff;font-size:14px;font-weight:600;font-family:inherit;white-space:nowrap;transition:opacity .2s;}' +\n      '.copy-btn:hover{opacity:.88;}' +\n      '.copy-btn.done{background:#2e7d32;}' +\n      '.copy-btn:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(161,29,33,.3);}' +\n\n      '.empty{display:none;padding:28px 20px;text-align:center;color:#999;font-size:14px;}' +\n      '.empty.show{display:block;}' +\n\n      \/* \u5e73\u677f *\/\n      '@media (max-width:960px){' +\n        '.intro{grid-template-columns:1fr;}' +\n        '.list-head,.row{grid-template-columns:58px minmax(0,1fr) 130px 150px 28px;}' +\n        '.list-head .h-lang,.list-head .h-diff,.c-lang,.c-diff{display:none;}' +\n        '.detail{padding-left:20px;}' +\n      '}' +\n\n      \/* \u624b\u6a5f *\/\n      '@media (max-width:640px){' +\n        '.sec-title{font-size:25px;}' +\n        '.eyebrow::before,.eyebrow::after{width:40px;}' +\n        '.info-btn{align-self:stretch;justify-content:center;}' +\n        '.toolbar{flex-direction:column;align-items:stretch;}' +\n        '.search-box{flex:auto;}' +\n        '.list-head{display:none;}' +\n        '.row{grid-template-columns:48px minmax(0,1fr) 24px;grid-template-areas:\"no title arrow\" \". meta arrow\";' +\n          'row-gap:6px;column-gap:10px;padding:14px 14px;}' +\n        '.c-no{grid-area:no;align-self:start;padding-top:1px;font-size:15px;}' +\n        '.c-title{grid-area:title;}' +\n        '.c-arrow{grid-area:arrow;}' +\n        '.c-school,.c-time,.c-lang,.c-diff{display:none;}' +\n        '.row .meta{grid-area:meta;display:flex !important;}' +\n        '.detail{flex-direction:column;gap:12px;padding:4px 14px 18px;}' +\n        '.kv-grid{grid-template-columns:1fr;padding:14px 14px;}' +\n        '.actions,.link-btn,.copy-btn{width:100%;justify-content:center;}' +\n        '.actions{order:-1;}' +\n        '.zh{font-size:15.5px;}' +\n      '}' +\n      '.meta{display:none;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:12.5px;color:#555;}' +\n      '.meta .m-school{color:#1976d2;font-weight:600;}' +\n      '.meta .c-diff-m{letter-spacing:1px;}' +\n      '.meta .c-diff-m .on{color:#e0a030;}' +\n      '.meta .c-diff-m .off{color:#e3e5e8;}' +\n    '<\/style>' +\n\n    '<div class=\"taica-wrap\">' +\n      \/* ---------- INTRO\uff1a\u9078\u8ab2\u8aaa\u660e\uff08\u6587\u5b57\u8207\u9023\u7d50\u6539\u9019\u88e1\uff09 ---------- *\/\n      '<div class=\"sec-head\">' +\n        '<div class=\"eyebrow\">TAICA\u00d7TKU<\/div>' +\n        '<h2 class=\"sec-title\">\u9078\u8ab2\u8aaa\u660e<\/h2>' +\n      '<\/div>' +\n      '<div class=\"intro\">' +\n        '<div class=\"info primary\">' +\n          '<div class=\"info-k\"><span class=\"dot\"><\/span>\u9078\u8ab2\u65b9\u5f0f<\/div>' +\n          '<div class=\"info-v\">\u8acb\u9015\u81f3<a href=\"https:\/\/www.ais.tku.edu.tw\/EleCos\/login\" target=\"_blank\" rel=\"noopener\">\u672c\u6821\u9078\u8ab2\u7cfb\u7d71<\/a>\uff0c\u8f38\u5165\u4e0b\u65b9\u6e05\u55ae\u7684\u300c\u958b\u8ab2\u5e8f\u865f\u300d\u5f8c\u6309\u300c\u52a0\u9078\u300d\u3002<\/div>' +\n          '<a class=\"info-btn red\" href=\"https:\/\/www.ais.tku.edu.tw\/EleCos\/login\" target=\"_blank\" rel=\"noopener\">\u524d\u5f80\u9078\u8ab2\u7cfb\u7d71' + EXTERNAL + '<\/a>' +\n        '<\/div>' +\n        '<div class=\"info\">' +\n          '<div class=\"info-k\"><span class=\"dot\"><\/span>\u6559\u5b78\u8a08\u756b\u8868<\/div>' +\n          '<div class=\"info-v\">\u6559\u5b78\u8a08\u756b\u8868\u8acb\u81f3<a class=\"blue\" href=\"https:\/\/deds.tku.edu.tw\/deds\/?page_id=2578\" target=\"_blank\" rel=\"noopener\">\u9060\u8ddd\u4e2d\u5fc3\u7db2\u9801<\/a>\u67e5\u8a62\u3002<\/div>' +\n          '<a class=\"info-btn ghost\" href=\"https:\/\/deds.tku.edu.tw\/deds\/?page_id=2578\" target=\"_blank\" rel=\"noopener\">\u67e5\u770b\u6559\u5b78\u8a08\u756b\u8868' + EXTERNAL + '<\/a>' +\n        '<\/div>' +\n        '<div class=\"info\">' +\n          '<div class=\"info-k\"><span class=\"dot\"><\/span>\u8ab2\u7a0b\u985e\u578b<\/div>' +\n          '<div class=\"info-v\">\u672c\u6b21\u958b\u8ab2\u5206\u70ba\u93e1\u50cf\u8ab2\u7a0b\u8207\u885b\u661f\u8ab2\u7a0b\uff08\u914d\u6709\u672c\u6821\u5354\u540c\u6559\u5e2b\uff09\u3002' +\n            '<div class=\"type-row\"><span class=\"type-tag mir\">\u93e1\u50cf\u8ab2\u7a0b<\/span><span class=\"type-tag sat\">\u885b\u661f\u8ab2\u7a0b<\/span><\/div>' +\n          '<\/div>' +\n        '<\/div>' +\n      '<\/div>' +\n      '<div class=\"list-title\">' +\n        '<h3>115-1 TAICA \u4e3b\u5c0e\u8ab2\u7a0b<\/h3>' +\n        '<a class=\"src-link\" href=\"https:\/\/taicatw.net\/fall-115\/\" target=\"_blank\" rel=\"noopener\">TAICA \u5b98\u7db2\uff1a115\u5b78\u5e74\u5ea6\u4e0a\u5b78\u671f\u958b\u8a2d\u8ab2\u7a0b\u6e05\u55ae' + EXTERNAL + '<\/a>' +\n      '<\/div>' +\n      \/* ---------- \u8ab2\u7a0b\u6e05\u55ae ---------- *\/\n      '<div class=\"toolbar\">' +\n        '<div class=\"search-box\">' +\n          '<svg class=\"search-icon\" viewBox=\"0 0 24 24\" width=\"18\" height=\"18\"><path fill=\"none\" d=\"M0 0h24v24H0z\"\/><path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" fill=\"currentColor\"\/><\/svg>' +\n          '<input class=\"search-input\" id=\"taicaSearch\" type=\"search\" placeholder=\"\u641c\u5c0b\uff1a\u8ab2\u540d \/ \u5b78\u6821 \/ \u6559\u5e2b \/ \u5b78\u7a0b\u2026\" \/>' +\n        '<\/div>' +\n        '<button class=\"toggle-all\" id=\"taicaToggleAll\" type=\"button\">\u5168\u90e8\u5c55\u958b<\/button>' +\n      '<\/div>' +\n      '<div class=\"note\">\u5171 ' + COURSES.length + ' \u9580 115-1 \u4e3b\u5c0e\u8ab2\u7a0b\uff0c\u9ede\u64ca\u8ab2\u7a0b\u53ef\u67e5\u770b\u8a73\u7d30\u8cc7\u8a0a<\/div>' +\n      '<div class=\"list-box\">' +\n        '<div class=\"list-head\" aria-hidden=\"true\">' +\n          '<span>\u958b\u8ab2\u5e8f\u865f<\/span><span>\u8ab2\u7a0b\u540d\u7a31<\/span><span>\u958b\u8ab2\u5b78\u6821<\/span><span>\u4e0a\u8ab2\u6642\u9593<\/span>' +\n          '<span class=\"h-lang\">\u8a9e\u8a00<\/span><span class=\"h-diff\">\u96e3\u5ea6<\/span><span><\/span>' +\n        '<\/div>' +\n        '<ul class=\"list\" id=\"taicaList\">' + COURSES.map(rowHTML).join(\"\") + '<\/ul>' +\n        '<div class=\"empty\" id=\"taicaEmpty\">\u627e\u4e0d\u5230\u7b26\u5408\u7684\u8ab2\u7a0b\uff0c\u63db\u500b\u95dc\u9375\u5b57\u8a66\u8a66\u770b<\/div>' +\n      '<\/div>' +\n    '<\/div>';\n\n  \/\/ \u624b\u6a5f\u7248\uff1a\u5728\u6bcf\u5217\u6a19\u984c\u4e0b\u65b9\u88dc\u4e00\u884c\u7cbe\u7c21\u8cc7\u8a0a\uff08\u5b78\u6821\uff5c\u6642\u9593\uff5c\u8a9e\u8a00\uff5c\u96e3\u5ea6\uff09\n  var rows = ROOT.querySelectorAll(\".row\");\n  rows.forEach(function (row, i) {\n    var c = COURSES[i];\n    var meta = document.createElement(\"span\");\n    meta.className = \"meta\";\n    meta.innerHTML =\n      '<span class=\"m-school\">' + esc(c.school) + '<\/span>' +\n      '<span>' + esc(c.classTime) + '<\/span>' +\n      '<span class=\"lang-tag\">' + esc(c.lang) + '<\/span>' +\n      '<span class=\"c-diff-m\" aria-label=\"\u8ab2\u7a0b\u96e3\u5ea6 ' + c.difficulty + ' \/ 8\">' + stars(c.difficulty) + '<\/span>';\n    row.insertBefore(meta, row.querySelector(\".c-arrow\"));\n  });\n\n  \/\/ ------------------------------------------------------------\n  \/\/ 5. \u4e92\u52d5\u908f\u8f2f\uff08\u5c55\u958b\uff0f\u6536\u5408\u3001\u5168\u90e8\u5c55\u958b\u3001\u641c\u5c0b\uff09\n  \/\/ ------------------------------------------------------------\n  var items = ROOT.querySelectorAll(\".item\");\n  var toggleAllBtn = ROOT.getElementById(\"taicaToggleAll\");\n  var searchInput = ROOT.getElementById(\"taicaSearch\");\n  var emptyMsg = ROOT.getElementById(\"taicaEmpty\");\n\n  function setOpen(item, open) {\n    item.classList.toggle(\"open\", open);\n    item.querySelector(\".row\").setAttribute(\"aria-expanded\", open ? \"true\" : \"false\");\n  }\n  function visibleItems() {\n    return Array.prototype.filter.call(items, function (it) { return it.style.display !== \"none\"; });\n  }\n  function syncToggleAll() {\n    var vis = visibleItems();\n    var allOpen = vis.length > 0 && vis.every(function (it) { return it.classList.contains(\"open\"); });\n    toggleAllBtn.textContent = allOpen ? \"\u5168\u90e8\u6536\u5408\" : \"\u5168\u90e8\u5c55\u958b\";\n  }\n\n  items.forEach(function (item) {\n    item.querySelector(\".row\").addEventListener(\"click\", function () {\n      setOpen(item, !item.classList.contains(\"open\"));\n      syncToggleAll();\n    });\n  });\n\n  toggleAllBtn.addEventListener(\"click\", function () {\n    var vis = visibleItems();\n    var allOpen = vis.length > 0 && vis.every(function (it) { return it.classList.contains(\"open\"); });\n    vis.forEach(function (it) { setOpen(it, !allOpen); });\n    syncToggleAll();\n  });\n\n  \/\/ \u8907\u88fd\u958b\u8ab2\u5e8f\u865f\n  function copyText(text, done) {\n    if (navigator.clipboard) {\n      navigator.clipboard.writeText(text).then(done, function () { fallbackCopy(text, done); });\n    } else {\n      fallbackCopy(text, done);\n    }\n  }\n  function fallbackCopy(text, done) {\n    var ta = document.createElement(\"textarea\");\n    ta.value = text;\n    ta.setAttribute(\"readonly\", \"\");\n    ta.style.position = \"fixed\";\n    ta.style.opacity = \"0\";\n    document.body.appendChild(ta);\n    ta.select();\n    try { document.execCommand(\"copy\"); done(); } catch (err) {}\n    document.body.removeChild(ta);\n  }\n  ROOT.addEventListener(\"click\", function (e) {\n    var btn = e.target.closest(\".copy-btn\");\n    if (!btn) return;\n    var serial = btn.getAttribute(\"data-serial\");\n    var label = btn.querySelector(\"span\");\n    copyText(serial, function () {\n      btn.classList.add(\"done\");\n      label.textContent = \"\u5df2\u8907\u88fd \" + serial + \" \u2713\";\n      setTimeout(function () {\n        btn.classList.remove(\"done\");\n        label.textContent = \"\u8907\u88fd\u958b\u8ab2\u5e8f\u865f \" + serial;\n      }, 2500);\n    });\n  });\n\n  searchInput.addEventListener(\"input\", function () {\n    var q = searchInput.value.trim().toLowerCase();\n    var shown = 0;\n    items.forEach(function (item) {\n      var hit = (item.getAttribute(\"data-search\") || \"\").indexOf(q) !== -1;\n      item.style.display = hit ? \"\" : \"none\";\n      if (hit) shown++;\n    });\n    emptyMsg.classList.toggle(\"show\", shown === 0);\n    syncToggleAll();\n  });\n})();\n<\/script>\n\n\n\n<!-- ============================================================\n  TAICA \u4fee\u8ab2\u65b9\u5f0f\u8207\u6d41\u7a0b\uff08\u4e09\u6b65\u9a5f\uff0b\u7533\u8acb\u4fee\u8b80\u652f\u7dda\uff0b\u4e2d\uff0fEN \u5207\u63db\uff09v3\n  \u8b8a\u66f4\uff1a\u300c\u7533\u8acb\u4fee\u8b80\u5b78\u7a0b\u300d\u79fb\u51fa\u6b65\u9a5f\uff0c\u6539\u70ba\u6a6b\u8de8\u6b65\u9a5f 1\u20132 \u7684\u5e73\u884c\u652f\u7dda\uff0c\u622a\u6b62\u9ede\u5728\u6b65\u9a5f 3\uff08\u7533\u8acb\u8b49\u66f8\uff09\u524d\u3002\n  \u8aaa\u660e\uff1a\u672c\u5340\u584a\u9396\u5728 Shadow DOM \u5167\uff0c\u4e0d\u6703\u53d7\u5916\u90e8 WordPress \u6a23\u5f0f\u5f71\u97ff\uff0c\u4e5f\u4e0d\u6703\u6c61\u67d3\u5916\u90e8\u9801\u9762\u6a23\u5f0f\u3002\n  \u7dad\u8b77\u65b9\u5f0f\uff1a\u6587\u5b57\u8207\u9023\u7d50\u90fd\u96c6\u4e2d\u5728\u4e0b\u65b9 LINKS\u3001STEPS\u3001TRACK\uff0c\u4e0d\u7528\u6539\u7248\u9762\u7d50\u69cb\u3002\n  \u52d5\u756b\uff1a\u6372\u5230\u672c\u5340\u584a\u6642\u64ad\u653e\u4e00\u6b21\u9032\u5834\u52d5\u756b\uff08\u9700\u642d\u914d\u9801\u9762\u6700\u4e0b\u65b9\u7684\u300c\u52d5\u756b\u63a7\u5236\u5668\u300d\u5340\u584a\uff09\u3002\n        \u52d5\u756b\u6a23\u5f0f\u5728 CSS \u7684\u300c\u9032\u5834\u52d5\u756b\u300d\u6bb5\u843d\uff1b\u4f7f\u7528\u8005\u82e5\u958b\u555f\u300c\u6e1b\u5c11\u52d5\u614b\u6548\u679c\u300d\u5247\u4e0d\u64ad\u653e\u3002\n============================================================ -->\n<div id=\"taicaProcHost\" data-anim data-anim-ms=\"2700\"><\/div>\n\n<script>\n(function () {\n  \"use strict\";\n\n  var HOST = document.getElementById(\"taicaProcHost\");\n  if (!HOST || HOST.shadowRoot) return;\n  var ROOT = HOST.attachShadow({ mode: \"open\" });\n\n  \/\/ ------------------------------------------------------------\n  \/\/ 1. \u9023\u7d50\n  \/\/ ------------------------------------------------------------\n  var LINKS = {\n    elecos: \"https:\/\/www.ais.tku.edu.tw\/EleCos\/login\",\n    syllabus: \"https:\/\/deds.tku.edu.tw\/deds\/?page_id=2578\",\n    ntucool: \"https:\/\/www.dlc.ntu.edu.tw\/ntu-cool\/\",\n    coolGuide: \"https:\/\/drive.google.com\/file\/d\/1nBuMhCO5pFoWFjhdW91iVLAUlCh4bjSD\/view?usp=sharing\",\n    coolSupport: \"https:\/\/www.dlc.ntu.edu.tw\/cool-support\/\",\n    tkuForm: \"https:\/\/athx.acad.tku.edu.tw\/get_page?t=doc_list&subcategory_id=302&title=%E8%A1%A8%E6%A0%BC%E4%B8%8B%E8%BC%89(%E5%AD%B8%E7%B1%8D%E6%A5%AD%E5%8B%99%E7%9B%B8%E9%97%9C)&fo=%E6%96%87%E4%BB%B6%E5%90%8D%E7%A8%B1&fi=%E7%9B%B8%E9%97%9C%E6%AA%94%E6%A1%88\",\n    taicaForm: \"https:\/\/aiee.acad.tku.edu.tw\/aiee\/wp-content\/uploads\/2026\/07\/\u9644\u4ef6_TAICA\u5b78\u7a0b\u5b78\u5206\u8b49\u660e\u7533\u8acb\u8868_1150703.docx\",\n    taicaList: \"https:\/\/aiee.acad.tku.edu.tw\/aiee\/wp-content\/uploads\/2026\/07\/\u9644\u4ef6_TAICA\u5b78\u7a0b\u8ab2\u7a0b\u8a8d\u5217\u6e05\u55ae_1150703.docx\"\n  };\n\n  \/\/ ------------------------------------------------------------\n  \/\/ 2. \u5716\u793a\n  \/\/ ------------------------------------------------------------\n  var ICON = {\n    ext: '<svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"\/><polyline points=\"15 3 21 3 21 9\"\/><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"\/><\/svg>',\n    dl: '<svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\/><polyline points=\"7 10 12 15 17 10\"\/><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"\/><\/svg>',\n    chev: '<svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg>',\n    arrow: '<svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg>',\n    tip: '<svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"\/><line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"\/><\/svg>',\n    flag: '<svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z\"\/><line x1=\"4\" y1=\"22\" x2=\"4\" y2=\"15\"\/><\/svg>',\n    clock: '<svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><polyline points=\"12 6 12 12 16 14\"\/><\/svg>',\n    shield: '<svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\/><polyline points=\"9 12 11 14 15 10\"\/><\/svg>'\n  };\n\n  function a(href, text, cls) {\n    return '<a class=\"' + (cls || \"txt-link\") + '\" href=\"' + href + '\" target=\"_blank\" rel=\"noopener\">' + text + \"<\/a>\";\n  }\n  function btn(href, text, style, icon) {\n    return '<a class=\"btn ' + (style || \"ghost\") + '\" href=\"' + href + '\" target=\"_blank\" rel=\"noopener\">' + text + (icon || ICON.ext) + \"<\/a>\";\n  }\n  function tip(html) {\n    return '<div class=\"tip\">' + ICON.tip + \"<div>\" + html + \"<\/div><\/div>\";\n  }\n  function safe(html) {\n    return '<div class=\"tip safe\">' + ICON.shield + \"<div>\" + html + \"<\/div><\/div>\";\n  }\n\n  \/\/ ------------------------------------------------------------\n  \/\/ 3. \u4ecb\u9762\u6587\u5b57\n  \/\/ ------------------------------------------------------------\n  var UI = {\n    zh: { title: \"\u4fee\u8ab2\u65b9\u5f0f\u8207\u6d41\u7a0b\", more: \"\u8a73\u7d30\u8aaa\u660e\", less: \"\u6536\u5408\u8aaa\u660e\", step: \"STEP\" },\n    en: { title: \"How to Enroll\", more: \"Details\", less: \"Hide details\", step: \"STEP\" }\n  };\n\n  \/\/ ------------------------------------------------------------\n  \/\/ 4. \u4e09\u500b\u6b65\u9a5f\uff08summary\uff1d\u5361\u7247\u4e0a\u7684\u4e00\u53e5\u8a71\uff1bdetail\uff1d\u5c55\u958b\u5f8c\u7684\u8aaa\u660e\uff09\n  \/\/ ------------------------------------------------------------\n  var STEPS = [\n    {\n      zh: {\n        title: \"\u9078\u8ab2\",\n        summary: \"\u5728\u672c\u6821\u9078\u8ab2\u7cfb\u7d71\u9078\u8ab2\uff0c\u8ab2\u7a0b\u5167\u5bb9\u53ef\u5148\u67e5\u6559\u5b78\u8a08\u756b\u8868\u3002\",\n        buttons: btn(LINKS.elecos, \"\u524d\u5f80\u9078\u8ab2\u7cfb\u7d71\", \"red\") + btn(LINKS.syllabus, \"\u6559\u5b78\u8a08\u756b\u8868\"),\n        detail:\n          \"<p>\u8acb\u9015\u81f3\" + a(LINKS.elecos, \"\u672c\u6821\u9078\u8ab2\u7cfb\u7d71\") + \"\u9078\u8ab2\uff0c\u6559\u5b78\u8a08\u756b\u8868\u8acb\u81f3\" + a(LINKS.syllabus, \"\u9060\u8ddd\u4e2d\u5fc3\u7db2\u9801\") + \"\u67e5\u8a62\u3002<\/p>\" +\n          tip(\"\u9078\u8ab2\u524d\u8acb\u5148\u78ba\u8a8d\u5404\u8ab2\u7a0b\u7684\u4e0a\u8ab2\u6642\u9593\u8207\u540c\u6b65\u8003\u8a66\u6642\u9593\uff0c\u907f\u514d\u8207\u5176\u4ed6\u8ab2\u7a0b\u885d\u5802\u3002\")\n      },\n      en: {\n        title: \"Course Selection\",\n        summary: \"Register through the TKU course selection system. Check the syllabi first.\",\n        buttons: btn(LINKS.elecos, \"Course Selection System\", \"red\") + btn(LINKS.syllabus, \"Syllabi\"),\n        detail:\n          \"<p>Please select courses directly through the \" + a(LINKS.elecos, \"university\u2019s course selection system\") +\n          \". Course syllabi and schedules are available on the \" + a(LINKS.syllabus, \"Center for Distance Education Development website\") + \".<\/p>\" +\n          tip(\"Before registering, please check each course\u2019s class time and synchronous exam dates to avoid schedule conflicts.\")\n      }\n    },\n    {\n      zh: {\n        title: \"\u4e0a\u8ab2\",\n        summary: \"\u9078\u4e0a\u5f8c\uff0c\u6821\u7d1a\u4fe1\u7bb1\u6703\u6536\u5230 NTU COOL \u8ab2\u7a0b\u9080\u8acb\u4fe1\uff0c\u4f9d\u4fe1\u4e2d\u5f15\u5c0e\u52a0\u5165\u8ab2\u7a0b\u3002\",\n        buttons: btn(LINKS.coolGuide, \"NTU COOL \u5e33\u865f\u555f\u7528\u6307\u5357\") + btn(LINKS.coolSupport, \"\u5e73\u53f0\u8aaa\u660e\"),\n        detail:\n          \"<p>\u4e0a\u8ab2\u65b9\u5f0f\u4f9d\u6388\u8ab2\u6559\u5e2b\u898f\u5b9a\u81f3\u5404\u5e73\u53f0\u4e0a\u8ab2\u3002\u4e3b\u5c0e\u8ab2\u7a0b\u7686\u4f7f\u7528\u81fa\u5927\u6578\u4f4d\u5b78\u7fd2\u5e73\u53f0 \" + a(LINKS.ntucool, \"NTU COOL\") +\n          \"\uff0c\u63a1\u540c\u6b65\u9060\u8ddd\u6559\u5b78\u4e26\u6709\u9304\u5f71\uff0c\u5b78\u751f\u53ef\u9078\u64c7\u975e\u540c\u6b65\u9060\u8ddd\u65b9\u5f0f\u5b78\u7fd2\u3002<\/p>\" +\n          '<dl class=\"kv\">' +\n            \"<dt>\u6821\u7d1a\u4fe1\u7bb1\u5e33\u865f<\/dt><dd>\u5b78\u865f@o365.tku.edu.tw<\/dd>\" +\n            \"<dt>\u9810\u8a2d\u5bc6\u78bc<\/dt><dd>Tku\uff0b\u897f\u66c6\u751f\u65e5\uff0c\u5982 Tku20010325\uff08\u7b2c\u4e00\u6b21\u767b\u5165\u5f8c\uff0c\u8acb\u8b8a\u66f4\u60a8\u7684\u9810\u8a2d\u5bc6\u78bc\uff09<\/dd>\" +\n          \"<\/dl>\" +\n          \"<p>\u975e\u81fa\u5927\u4f7f\u7528\u8005\u5982\u4f55\u555f\u7528 NTU COOL \u5e33\u865f\uff1a\" + a(LINKS.coolGuide, \"\u67e5\u770b\u6307\u5357\") + \"<\/p>\" +\n          tip(\"NTU COOL \u7684\u4fee\u8ab2\u540d\u55ae\u6bcf\u9031\u66f4\u65b0\u4e00\u6b21\uff0c\u52a0\u9078\u5f8c\u53ef\u80fd\u9700\u8981\u7b49\u5e7e\u5929\u624d\u6703\u6536\u5230\u9080\u8acb\u4fe1\u3002\")\n      },\n      en: {\n        title: \"Attend Classes\",\n        summary: \"After registering, you will receive an NTU COOL course invitation in your TKU email.\",\n        buttons: btn(LINKS.coolGuide, \"NTU COOL Activation Guide\") + btn(LINKS.coolSupport, \"Platform Guide\"),\n        detail:\n          \"<p>Classes are conducted according to the instructor\u2019s requirements on the designated learning platform. TAICA courses are offered on the \" +\n          a(LINKS.ntucool, \"NTU COOL\") + \" digital learning platform; teaching is conducted synchronously online and recorded, so students may also choose asynchronous learning.<\/p>\" +\n          '<dl class=\"kv\">' +\n            \"<dt>TKU email account<\/dt><dd>studentID@o365.tku.edu.tw<\/dd>\" +\n            \"<dt>Default password<\/dt><dd>Tku + your birthdate in YYYYMMDD format (e.g., Tku20010325). Please change your password after your first login.<\/dd>\" +\n          \"<\/dl>\" +\n          \"<p>How non-NTU users can activate their NTU COOL account: \" + a(LINKS.coolGuide, \"View Guide\") + \"<\/p>\" +\n          tip(\"The NTU COOL class roster is updated once a week, so the invitation email may take a few days to arrive after you add a course.\")\n      }\n    },\n    {\n      zh: {\n        title: \"\u4fee\u7562\u7533\u8acb\u8b49\u66f8\",\n        summary: \"\u4fee\u7562\u81f3\u5c11 15 \u5b78\u5206\u4e14\u6210\u7e3e\u53ca\u683c\uff0c\u5148\u7533\u8acb\u6de1\u6c5f\u5927\u5b78TAICA\u5b78\u5206\u5b78\u7a0b\u8b49\u660e\u66f8\uff0c\u518d\u7533\u8acb\u6559\u80b2\u90e8 TAICA \u5b78\u7a0b\u5b78\u5206\u8b49\u660e\u3002\",\n        buttons: '<span class=\"pill\">\u2460 \u6de1\u6c5f<\/span><span class=\"seq\">\u2192<\/span><span class=\"pill blue\">\u2461 \u6559\u80b2\u90e8<\/span>',\n        detail:\n          '<div class=\"cert-grid\">' +\n            '<div class=\"cert\">' +\n              '<div class=\"cert-h\"><span class=\"cn\">1<\/span>\u6de1\u6c5f\u5927\u5b78TAICA\u5b78\u5206\u5b78\u7a0b\u8b49\u660e\u66f8<\/div>' +\n              '<dl class=\"kv\">' +\n                \"<dt>\u7533\u8acb\u8868<\/dt><dd>\u6de1\u6c5f\u5927\u5b78\u5b78\u751f\u8de8\u7cfb\u3001\u6240\u3001\u9662\u5b78\u7a0b\u5b78\u5206\u8b49\u660e\u66f8\u7533\u8acb\u8868<\/dd>\" +\n                \"<dt>\u6838\u767c<\/dt><dd>\u7b26\u5408\u6821\u5167\u898f\u5b9a\u8005\uff0c\u767c\u7d66\u6de1\u6c5f\u5927\u5b78TAICA\u5b78\u5206\u5b78\u7a0b\u8b49\u660e\u66f8<\/dd>\" +\n              \"<\/dl>\" +\n              '<div class=\"btns\">' + btn(LINKS.tkuForm, \"\u524d\u5f80\u8868\u683c\u4e0b\u8f09\u9801\") + \"<\/div>\" +\n              '<div class=\"hint\">\u9032\u5165\u9801\u9762\u5f8c\uff0c\u8acb\u627e\u300c\u8de8\u7cfb\u3001\u6240\u3001\u9662\u5b78\u7a0b\u5b78\u5206\u8b49\u660e\u66f8\u7533\u8acb\u8868\u300d\u3002<\/div>' +\n            \"<\/div>\" +\n            '<div class=\"cert-arrow\" aria-hidden=\"true\"><span>\u53d6\u5f97\u5f8c<\/span>' + ICON.arrow + \"<\/div>\" +\n            '<div class=\"cert taica\">' +\n              '<div class=\"cert-h\"><span class=\"cn\">2<\/span>\u6559\u80b2\u90e8 TAICA \u5b78\u7a0b\u5b78\u5206\u8b49\u660e\uff08\u6578\u4f4d\u8b49\u66f8\uff09<\/div>' +\n              '<dl class=\"kv\">' +\n                \"<dt>\u524d\u63d0<\/dt><dd><b class=\\\"hl\\\">\u9808\u5148\u53d6\u5f97\u6de1\u6c5f\u5927\u5b78TAICA\u5b78\u5206\u5b78\u7a0b\u8b49\u660e\u66f8<\/b><\/dd>\" +\n                \"<dt>\u53e6\u9700<\/dt><dd>\u540c\u4e00\u5b78\u7a0b\u5167\u81f3\u5c11 8 \u5b78\u5206\u70ba\u806f\u76df\u4e3b\u5c0e\u8ab2\u7a0b\uff08\u93e1\u50cf\u6216\u885b\u661f\u8ab2\u7a0b\uff09<\/dd>\" +\n                \"<dt>\u7533\u8acb\u8868<\/dt><dd>TAICA \u5b78\u7a0b\u5b78\u5206\u8b49\u660e\u7533\u8acb\u8868\u3001TAICA \u5b78\u7a0b\u8ab2\u7a0b\u8a8d\u5217\u6e05\u55ae\uff08\u542b\u5be9\u6838\u7528\u5370\uff09<\/dd>\" +\n                \"<dt>\u6838\u767c<\/dt><dd>\u7d93\u5be9\u6838\u7121\u8aa4\u5f8c\uff0c\u4f9d TAICA \u898f\u5b9a\u65e5\u671f\u63d0\u4ea4\u7533\u8acb\u540d\u55ae\uff0c\u7531\u6559\u80b2\u90e8 TAICA \u806f\u76df\u767c\u7d66\u6578\u4f4d\u8b49\u66f8<\/dd>\" +\n              \"<\/dl>\" +\n              '<div class=\"btns\">' +\n                btn(LINKS.taicaForm, \"TAICA \u5b78\u7a0b\u5b78\u5206\u8b49\u660e\u7533\u8acb\u8868\", \"blue\", ICON.dl) +\n                btn(LINKS.taicaList, \"TAICA \u5b78\u7a0b\u8ab2\u7a0b\u8a8d\u5217\u6e05\u55ae\", \"blue\", ICON.dl) +\n              \"<\/div>\" +\n            \"<\/div>\" +\n          \"<\/div>\" +\n          '<div class=\"common\">' +\n            '<div class=\"common-h\">\u7533\u8acb\u5171\u540c\u4e8b\u9805<\/div>' +\n            '<dl class=\"kv\">' +\n              \"<dt>\u524d\u63d0<\/dt><dd><b class=\\\"hl-amber\\\">\u5df2\u63d0\u51fa\u4fee\u8b80\u672c\u5b78\u7a0b\u7533\u8acb<\/b><\/dd>\" +\n              \"<dt>\u57fa\u672c\u8cc7\u683c<\/dt><dd>\u65bc\u4e3b\u4fee\u5b78\u7cfb\u4fee\u696d\u5e74\u9650\u5167\uff0c\u4fee\u7562\u672c\u5b78\u7a0b\u898f\u5b9a\u81f3\u5c11 15 \u5b78\u5206\u4e14\u6210\u7e3e\u53ca\u683c<\/dd>\" +\n              \"<dt>\u61c9\u5099\u6587\u4ef6<\/dt><dd>\u7533\u8acb\u8868\uff0b\u6b77\u5e74\u6210\u7e3e\u55ae\u6b63\u672c\u4e59\u4efd<\/dd>\" +\n              \"<dt>\u7533\u8acb\u6642\u9593<\/dt><dd>\u4f9d\u672c\u6821\u884c\u4e8b\u66c6\u516c\u544a\u6642\u9593<\/dd>\" +\n              \"<dt>\u9001\u4ef6\u5730\u9ede<\/dt><dd>AI \u502b\u7406\u6559\u80b2\u8cc7\u6e90\u4e2d\u5fc3\u8fa6\u516c\u5ba4\uff08\u884c\u653f\u5927\u6a13 A210\uff0c12 \u865f\u6ac3\u81fa\uff09<\/dd>\" +\n            \"<\/dl>\" +\n          \"<\/div>\"\n      },\n      en: {\n        title: \"Apply for Certificates\",\n        summary: \"Complete at least 15 credits with passing grades. Apply for the Tamkang University TAICA Credit Program Certificate first, then the MOE TAICA certificate.\",\n        buttons: '<span class=\"pill\">\u2460 Tamkang<\/span><span class=\"seq\">\u2192<\/span><span class=\"pill blue\">\u2461 MOE<\/span>',\n        detail:\n          '<div class=\"cert-grid\">' +\n            '<div class=\"cert\">' +\n              '<div class=\"cert-h\"><span class=\"cn\">1<\/span>Tamkang University TAICA Credit Program Certificate<\/div>' +\n              '<dl class=\"kv\">' +\n                \"<dt>Form<\/dt><dd>Tamkang University Interdepartmental\/Interdisciplinary Credit Program Certificate Application Form<\/dd>\" +\n                \"<dt>Issued by<\/dt><dd>Tamkang University, to students who meet the internal program requirements<\/dd>\" +\n              \"<\/dl>\" +\n              '<div class=\"btns\">' + btn(LINKS.tkuForm, \"Form Download Page\") + \"<\/div>\" +\n              '<div class=\"hint\">On the download page, look for the credit program certificate application form (\u8de8\u7cfb\u3001\u6240\u3001\u9662\u5b78\u7a0b\u5b78\u5206\u8b49\u660e\u66f8\u7533\u8acb\u8868).<\/div>' +\n            \"<\/div>\" +\n            '<div class=\"cert-arrow\" aria-hidden=\"true\"><span>Then<\/span>' + ICON.arrow + \"<\/div>\" +\n            '<div class=\"cert taica\">' +\n              '<div class=\"cert-h\"><span class=\"cn\">2<\/span>MOE TAICA Credit Program Certificate (digital)<\/div>' +\n              '<dl class=\"kv\">' +\n                \"<dt>Prerequisite<\/dt><dd><b class=\\\"hl\\\">Tamkang University TAICA Credit Program Certificate required first<\/b><\/dd>\" +\n                \"<dt>Also required<\/dt><dd>At least 8 credits within the same program from TAICA alliance courses (mirror or satellite)<\/dd>\" +\n                \"<dt>Forms<\/dt><dd>TAICA Credit Program Certificate Application Form and TAICA Course Recognition List (with review seals)<\/dd>\" +\n                \"<dt>Issued by<\/dt><dd>After verification, the Center submits eligible applicants to TAICA on the designated schedule, and the Ministry of Education\u2019s TAICA alliance issues a digital certificate<\/dd>\" +\n              \"<\/dl>\" +\n              '<div class=\"btns\">' +\n                btn(LINKS.taicaForm, \"TAICA Certificate Application Form\", \"blue\", ICON.dl) +\n                btn(LINKS.taicaList, \"TAICA Course Recognition List\", \"blue\", ICON.dl) +\n              \"<\/div>\" +\n            \"<\/div>\" +\n          \"<\/div>\" +\n          '<div class=\"common\">' +\n            '<div class=\"common-h\">For both applications<\/div>' +\n            '<dl class=\"kv\">' +\n              \"<dt>Prerequisite<\/dt><dd><b class=\\\"hl-amber\\\">You have applied to join the program<\/b><\/dd>\" +\n              \"<dt>Basic requirement<\/dt><dd>Complete at least 15 required credits with passing grades within the study period of your major<\/dd>\" +\n              \"<dt>Documents<\/dt><dd>Application form + one official transcript<\/dd>\" +\n              \"<dt>When<\/dt><dd>During the application period announced in the academic calendar<\/dd>\" +\n              \"<dt>Where<\/dt><dd>Center for AI Ethics Education (Administration Building A210, Counter 12)<\/dd>\" +\n            \"<\/dl>\" +\n          \"<\/div>\"\n      }\n    }\n  ];\n\n  \/\/ ------------------------------------------------------------\n  \/\/ 5. \u7533\u8acb\u4fee\u8b80\u5b78\u7a0b\uff08\u5e73\u884c\u652f\u7dda\uff09\n  \/\/ ------------------------------------------------------------\n  var TRACK = {\n    zh: {\n      tag: \"\u96a8\u6642\u53ef\u8fa6\",\n      title: \"\u7533\u8acb\u4fee\u8b80\u5b78\u7a0b\",\n      sub: \"\u4fee\u8ab2\u524d\u3001\u4fee\u8ab2\u4e2d\u3001\u4fee\u8ab2\u5f8c\u90fd\u80fd\u7533\u8acb\",\n      period: \"\u6bcf\u5b78\u671f\u7b2c 10 \u9031\u8d77\u30fb\u70ba\u671f 4 \u9031\",\n      dlLabel: \"\u622a\u6b62\u9ede\",\n      deadline: \"\u9808\u65bc\u7533\u8acb\u8b49\u66f8\u524d\u5b8c\u6210\",\n      detail:\n        \"<p>\u4f9d\u672c\u6821\u884c\u4e8b\u66c6\u516c\u544a\u6642\u9593\uff0c\u5411\u672c\u6821 AI \u502b\u7406\u6559\u80b2\u8cc7\u6e90\u4e2d\u5fc3\u7dda\u4e0a\u63d0\u51fa\u7533\u8acb\u3002\u7533\u8acb\u8868\u55ae\u6bcf\u5e74\u958b\u653e\u5169\u6b21\uff0c\u5206\u5225\u65bc\u6bcf\u5b78\u671f\u7b2c\u5341\u9031\u8d77\u53d7\u7406\uff0c\u70ba\u671f\u56db\u9031\u3002<\/p>\" +\n        '<dl class=\"kv\">' +\n          \"<dt>\u4ec0\u9ebc\u6642\u5019\u7533\u8acb<\/dt><dd>\u4fee\u8ab2\u524d\u3001\u4fee\u8ab2\u4e2d\u3001\u4fee\u8ab2\u5f8c\u7686\u53ef\uff0c\u53ea\u8981\u5728\u7533\u8acb\u4fee\u7562\u8b49\u66f8\u524d\u5b8c\u6210\u5373\u53ef<\/dd>\" +\n          \"<dt>\u5df2\u4fee\u904e\u7684\u8ab2<\/dt><dd>\u7533\u8acb\u524d\u5df2\u4fee\u7fd2\u7684\u5b78\u7a0b\u6307\u5b9a\u79d1\u76ee\uff0c\u53ef\u4ee5\u5217\u5165\u5b78\u5206\u5be9\u67e5<\/dd>\" +\n        \"<\/dl>\" +\n        safe(\"<b>\u7533\u8acb\u4fee\u8b80\u4e0d\u5f71\u97ff\u7562\u696d\u8cc7\u683c<\/b>\uff1a\u5373\u4f7f\u6700\u5f8c\u6c92\u6709\u4fee\u5b8c\u5b78\u7a0b\uff0c\u4e5f\u4e0d\u6703\u5f71\u97ff\u4e3b\u4fee\u5b78\u7cfb\u7684\u7562\u696d\uff0c\u53ef\u4ee5\u653e\u5fc3\u7533\u8acb\u3002\")\n    },\n    en: {\n      tag: \"Anytime\",\n      title: \"Apply for the Program\",\n      sub: \"Apply before, during, or after taking courses\",\n      period: \"From Week 10 \u00b7 4 weeks\",\n      dlLabel: \"Deadline\",\n      deadline: \"Before applying for certificates\",\n      detail:\n        \"<p>According to the academic calendar, students submit their applications online to the Center for AI Ethics Education. The online form opens twice a year, starting from Week 10 of each semester and remaining open for four weeks.<\/p>\" +\n        '<dl class=\"kv\">' +\n          \"<dt>When to apply<\/dt><dd>Before, during, or after taking courses, as long as it is done before you apply for certificates<\/dd>\" +\n          \"<dt>Completed courses<\/dt><dd>Designated courses completed before applying may be included in the credit review<\/dd>\" +\n        \"<\/dl>\" +\n        safe(\"<b>Applying does not affect your graduation eligibility.<\/b> Even if you do not complete the program, graduation from your major is not affected.\")\n    }\n  };\n  var TRACK_IDX = STEPS.length; \/\/ \u5c55\u958b\u72c0\u614b\u7528\n\n  \/\/ ------------------------------------------------------------\n  \/\/ 6. \u6a23\u5f0f\n  \/\/ ------------------------------------------------------------\n  var CSS =\n    ':host{all:initial;display:block;padding:40px 0;}@media (max-width:760px){:host{padding:28px 0;}}' +\n    '.wrap{font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans TC\",\"Microsoft JhengHei\",sans-serif;' +\n      'color:#2b2b2b;max-width:1200px;margin:0 auto;box-sizing:border-box;}' +\n    '.wrap *{box-sizing:border-box;}' +\n\n    \/* \u6a19\u984c\u5217 *\/\n    '.head{position:relative;text-align:center;margin:0 0 28px;}' +\n    '.eyebrow{display:inline-flex;align-items:center;gap:14px;color:#a11d21;font-size:15px;letter-spacing:1px;}' +\n    '.eyebrow::before,.eyebrow::after{content:\"\";width:60px;height:6px;border-top:2px solid #a11d21;border-bottom:2px solid #a11d21;}' +\n    '.title{margin:6px 0 0;font-size:30px;font-weight:700;color:#1f2329;letter-spacing:2px;line-height:1.4;}' +\n    '.lang{position:absolute;right:0;bottom:4px;display:inline-flex;padding:3px;border:1px solid #e3e6ea;border-radius:999px;background:#fff;}' +\n    '.lang button{border:none;background:transparent;padding:6px 14px;border-radius:999px;font-size:13px;font-weight:600;color:#6b7280;cursor:pointer;font-family:inherit;}' +\n    '.lang button[aria-pressed=\"true\"]{background:#1976d2;color:#fff;}' +\n    '.lang button:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(74,144,226,.35);}' +\n\n    \/* \u6b65\u9a5f\u5361\uff08\u7b2c 1 \u5217\uff09\uff0b\u652f\u7dda\uff08\u7b2c 2 \u5217\uff09 *\/\n    '.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:40px;row-gap:16px;align-items:stretch;}' +\n    '.card{position:relative;display:flex;flex-direction:column;gap:10px;padding:22px 20px 16px;border:1px solid #e8e8e8;' +\n      'border-radius:14px;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.04);transition:border-color .2s,box-shadow .2s;grid-row:1;}' +\n    '.card:nth-child(-n+2)::after{content:\"\";position:absolute;top:40px;right:-27px;width:14px;height:14px;' +\n      'border-top:2.5px solid #c9cfd8;border-right:2.5px solid #c9cfd8;transform:rotate(45deg);}' +\n    '.card.open{border-color:#1976d2;box-shadow:0 6px 20px rgba(25,118,210,.12);}' +\n    '.num-row{display:flex;align-items:center;gap:10px;}' +\n    '.num{width:36px;height:36px;border-radius:50%;background:#e3f2fd;color:#1976d2;font-weight:700;font-size:17px;' +\n      'display:flex;align-items:center;justify-content:center;flex-shrink:0;}' +\n    '.card.open .num{background:#1976d2;color:#fff;}' +\n    '.step-lbl{font-size:12px;font-weight:700;letter-spacing:1px;color:#9aa0a8;}' +\n    '.card h3{margin:0;font-size:19px;font-weight:700;color:#1f2329;line-height:1.4;}' +\n    '.summary{margin:0;font-size:14.5px;line-height:1.7;color:#444;flex:1;}' +\n    '.btns{display:flex;flex-wrap:wrap;gap:8px;}' +\n    '.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 13px;border-radius:8px;font-size:13.5px;font-weight:600;' +\n      'text-decoration:none;line-height:1.3;transition:background .2s,opacity .2s;}' +\n    '.btn.red{background:#a11d21;color:#fff;}' +\n    '.btn.red:hover{opacity:.88;}' +\n    '.btn.ghost{background:#fff;color:#1976d2;border:1px solid rgba(25,118,210,.25);}' +\n    '.btn.ghost:hover{background:#e3f2fd;}' +\n    '.btn.blue{background:#1976d2;color:#fff;}' +\n    '.btn.blue:hover{opacity:.88;}' +\n    '.pill{display:inline-block;padding:5px 12px;border-radius:999px;background:#fdecec;color:#a11d21;font-size:13px;font-weight:600;}' +\n    '.pill.blue{background:#e3f2fd;color:#1976d2;}' +\n    '.pill.amber{background:#fff;color:#b45309;border:1px solid #f3d08a;white-space:nowrap;}' +\n    '.more{align-self:flex-start;display:inline-flex;align-items:center;gap:4px;margin-top:4px;padding:6px 0;border:none;background:none;' +\n      'color:#1976d2;font-size:13.5px;font-weight:600;cursor:pointer;font-family:inherit;}' +\n    '.more svg{transition:transform .25s;}' +\n    '.card.open .more svg,.track.open .more svg{transform:rotate(180deg);}' +\n    '.more:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(74,144,226,.3);border-radius:6px;}' +\n\n    \/* \u652f\u7dda\u8272\u5e36\uff1a\u6a6b\u8de8\u6b65\u9a5f 1\u20132\uff0c\u7bad\u982d\u6307\u5411\u6b65\u9a5f 3 \u524d\u7684\u622a\u6b62\u9ede *\/\n    '.track{grid-column:1 \/ 3;grid-row:2;margin-right:-28px;}' +\n    '.band{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 48px 14px 18px;' +\n      'background:linear-gradient(90deg,#fffaf0 0%,#ffefd3 100%);' +\n      'clip-path:polygon(0 0,calc(100% - 26px) 0,100% 50%,calc(100% - 26px) 100%,0 100%);border-radius:12px 0 0 12px;}' +\n    '.track.open .band{background:linear-gradient(90deg,#fff4dd 0%,#ffe2b0 100%);}' +\n    '.band-main{display:flex;align-items:center;gap:14px;min-width:0;}' +\n    '.band-tag{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:999px;background:#f59e0b;color:#fff;' +\n      'font-size:12.5px;font-weight:700;white-space:nowrap;flex-shrink:0;}' +\n    '.band-title{font-size:17px;font-weight:700;color:#1f2329;line-height:1.4;}' +\n    '.band-sub{font-size:14px;color:#7a5a1e;line-height:1.6;}' +\n    '.band-side{display:flex;align-items:center;gap:14px;flex-shrink:0;}' +\n    '.band-side .more{margin-top:0;color:#b45309;}' +\n    '.band-dl-m{display:none;}' +\n    '.deadline{grid-column:3;grid-row:2;align-self:center;display:flex;align-items:center;gap:8px;padding:6px 0 6px 14px;' +\n      'border-left:2.5px dashed #f0b44c;color:#b45309;}' +\n    '.deadline b{display:block;font-size:12px;letter-spacing:1px;}' +\n    '.deadline span{display:block;font-size:14px;font-weight:600;color:#7a5a1e;line-height:1.5;}' +\n\n    \/* \u5c55\u958b\u5340\uff08\u684c\u6a5f\uff1a\u5171\u7528\u9762\u677f\uff1b\u624b\u6a5f\uff1a\u5361\u7247\u5167\uff09 *\/\n    '.collapse{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease;}' +\n    '.collapse.show{grid-template-rows:1fr;}' +\n    '.collapse > div{overflow:hidden;min-height:0;}' +\n    '.panel-box{margin-top:18px;padding:24px 26px;border:1px solid #d6e6f7;border-radius:14px;background:#f7fbff;}' +\n    '.panel-box.amber{border-color:#f3d9a8;background:#fffaf1;}' +\n    '.panel-h{display:flex;align-items:center;gap:10px;margin:0 0 14px;font-size:17px;font-weight:700;color:#1f2329;}' +\n    '.panel-h .num{width:30px;height:30px;font-size:15px;background:#1976d2;color:#fff;}' +\n    '.panel-h .num.amber{background:#f59e0b;}' +\n    '.inline-detail{display:none;}' +\n\n    \/* \u8a73\u7d30\u5167\u5bb9 *\/\n    '.detail p{margin:0 0 12px;font-size:15px;line-height:1.8;color:#333;}' +\n    '.txt-link{color:#1976d2;font-weight:600;text-decoration:underline;text-underline-offset:3px;word-break:break-word;}' +\n    '.kv{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;margin:0 0 12px;font-size:14.5px;line-height:1.7;}' +\n    '.kv dt{color:#8a8f98;font-weight:600;white-space:nowrap;}' +\n    '.kv dd{margin:0;color:#333;}' +\n    '.tip{display:flex;gap:8px;align-items:flex-start;padding:10px 14px;border-radius:10px;background:#fff8e6;color:#8a5a00;font-size:14px;line-height:1.7;}' +\n    '.tip svg{flex-shrink:0;margin-top:4px;}' +\n    '.tip.safe{background:#ecf8f0;color:#1e6b3c;}' +\n    '.cert-grid{display:grid;grid-template-columns:minmax(0,1fr) 56px minmax(0,1fr);margin-bottom:16px;}' +\n    '.cert-arrow{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:#1976d2;font-size:12px;font-weight:700;}' +\n    '.cert-arrow span{color:#9aa0a8;}' +\n    '.cn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;margin-right:8px;border-radius:50%;background:#a11d21;color:#fff;font-size:12.5px;vertical-align:2px;}' +\n    '.cert.taica .cn{background:#1976d2;}' +\n    '.hl{color:#a11d21;font-weight:700;}' +\n    '.hl-amber{color:#b45309;font-weight:700;}' +\n    '.seq{align-self:center;color:#9aa0a8;font-weight:700;}' +\n    '.cert{padding:18px 20px;border:1px solid #e8e8e8;border-radius:12px;background:#fff;border-top:4px solid #a11d21;}' +\n    '.cert.taica{border-top-color:#1976d2;}' +\n    '.cert-h{font-size:16px;font-weight:700;color:#1f2329;margin-bottom:12px;}' +\n    '.cert .btns{margin-top:4px;}' +\n    '.hint{margin-top:8px;font-size:13px;color:#888;line-height:1.6;}' +\n    '.common{padding:16px 20px;border-radius:12px;background:#fff;border:1px dashed #cdd6e1;}' +\n    '.common-h{font-size:14px;font-weight:700;color:#1976d2;margin-bottom:10px;}' +\n    '.common .kv{margin:0;}' +\n\n    \/* ===== \u9032\u5834\u52d5\u756b\uff1a\u7531\u9801\u5c3e\u300c\u52d5\u756b\u63a7\u5236\u5668\u300d\u52a0\u4e0a class \u89f8\u767c\uff0c\u53ea\u64ad\u4e00\u6b21 ===== *\/\n    '@keyframes fadeUp{from{opacity:0;transform:translateY(18px);}to{opacity:1;transform:none;}}' +\n    '@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}' +\n    '@keyframes wipe{from{clip-path:inset(0 100% 0 0);}to{clip-path:inset(0 0 0 0);}}' +\n    '@keyframes pop{0%{opacity:0;transform:scale(.6);}60%{opacity:1;transform:scale(1.08);}100%{opacity:1;transform:scale(1);}}' +\n    '@keyframes wave{0%,100%{transform:rotate(0);}25%{transform:rotate(-14deg);}50%{transform:rotate(10deg);}75%{transform:rotate(-6deg);}}' +\n    '@media (prefers-reduced-motion:no-preference){' +\n      \/* \u9032\u5165\u756b\u9762\u524d\u5148\u96b1\u85cf *\/\n      ':host(.anim-ready:not(.is-in)) .head,:host(.anim-ready:not(.is-in)) .card,:host(.anim-ready:not(.is-in)) .card::after,' +\n      ':host(.anim-ready:not(.is-in)) .track,:host(.anim-ready:not(.is-in)) .deadline{opacity:0;}' +\n      \/* \u6a19\u984c *\/\n      ':host(.is-in:not(.anim-done)) .head{animation:fadeUp .6s ease-out both;}' +\n      \/* \u6b65\u9a5f\u5361 1 \u2192 2 \u2192 3 \u4f9d\u5e8f\u6d6e\u73fe\uff0c\u4e2d\u9593\u7bad\u982d\u8ddf\u8457\u4eae\u8d77 *\/\n      ':host(.is-in:not(.anim-done)) .card{animation:fadeUp .6s cubic-bezier(.2,.7,.3,1) both;}' +\n      ':host(.is-in:not(.anim-done)) .card:nth-child(1){animation-delay:.15s;}' +\n      ':host(.is-in:not(.anim-done)) .card:nth-child(2){animation-delay:.35s;}' +\n      ':host(.is-in:not(.anim-done)) .card:nth-child(3){animation-delay:.55s;}' +\n      ':host(.is-in:not(.anim-done)) .card::after{animation:fadeIn .4s ease-out both;}' +\n      ':host(.is-in:not(.anim-done)) .card:nth-child(1)::after{animation-delay:.5s;}' +\n      ':host(.is-in:not(.anim-done)) .card:nth-child(2)::after{animation-delay:.7s;}' +\n      \/* \u652f\u7dda\u8272\u5e36\u7531\u5de6\u5f80\u53f3\u756b\u51fa *\/\n      ':host(.is-in:not(.anim-done)) .track{animation:wipe .8s cubic-bezier(.4,0,.2,1) .95s both;}' +\n      \/* \u622a\u6b62\u9ede\u5f48\u51fa\uff0c\u65d7\u5b50\u63ee\u4e00\u4e0b *\/\n      ':host(.is-in:not(.anim-done)) .deadline{animation:pop .5s ease-out 1.65s both;}' +\n      ':host(.is-in:not(.anim-done)) .deadline svg{animation:wave .7s ease-in-out 2s both;transform-origin:15% 90%;}' +\n      \/* \u5c55\u958b\u8aaa\u660e\u6642\uff0c\u5167\u5bb9\u6de1\u5165 *\/\n      '.collapse.show .detail{animation:fadeIn .35s ease-out both;}' +\n    '}' +\n\n    \/* \u5e73\u677f *\/\n    '@media (max-width:1024px){' +\n      '.steps{column-gap:32px;}' +\n      '.card:nth-child(-n+2)::after{right:-23px;}' +\n      '.track{margin-right:-24px;}' +\n      '.band{flex-direction:column;align-items:flex-start;gap:10px;}' +\n      '.cert-grid{grid-template-columns:1fr;grid-template-rows:auto 52px auto;}' +\n      '.cert-arrow{flex-direction:row;}' +\n      '.cert-arrow svg{transform:rotate(90deg);}' +\n    '}' +\n\n    \/* \u624b\u6a5f\uff1a\u76f4\u6392\uff0c\u652f\u7dda\u653e\u5728\u6b65\u9a5f\u4e0b\u65b9\uff0c\u6539\u6210\u865b\u7dda\u6846 *\/\n    '@media (max-width:760px){' +\n      '.head{margin-bottom:22px;}' +\n      '.title{font-size:25px;}' +\n      '.eyebrow::before,.eyebrow::after{width:40px;}' +\n      '.lang{position:static;margin-top:12px;}' +\n      '.steps{grid-template-columns:1fr;row-gap:26px;}' +\n      '.card,.track{grid-row:auto;grid-column:auto;}' +\n      '.card:nth-child(-n+2)::after{top:auto;bottom:-19px;right:auto;left:50%;margin-left:-6px;width:12px;height:12px;transform:rotate(135deg);}' +\n      '.card{padding:18px 16px 12px;}' +\n      '.track{margin:0;padding:16px;border:1.5px dashed #f0b44c;border-radius:14px;background:#fffaf1;}' +\n      '.band,.track.open .band{clip-path:none;background:none;padding:0;border-radius:0;}' +\n      '.band-main{align-items:flex-start;flex-direction:column;gap:8px;}' +\n      '.band-side{flex-wrap:wrap;gap:10px;}' +\n      '.band-dl-m{display:flex;align-items:center;gap:6px;margin-top:10px;font-size:14px;font-weight:600;color:#b45309;}' +\n      '.deadline{display:none;}' +\n      '.panel{display:none;}' +\n      '.inline-detail{display:grid;}' +\n      '.inline-detail .detail{padding-top:10px;margin-top:4px;border-top:1px solid #eef1f4;}' +\n      '.track .inline-detail .detail{border-top-color:#f6e2bb;margin-top:10px;}' +\n      '.kv{grid-template-columns:1fr;gap:0;}' +\n      '.kv dt{margin-top:6px;}' +\n      '.btn{flex:1 1 auto;justify-content:center;}' +\n    '}';\n\n  \/\/ ------------------------------------------------------------\n  \/\/ 7. \u7e6a\u88fd\u8207\u4e92\u52d5\n  \/\/ ------------------------------------------------------------\n  var lang = \"zh\";\n  var openIdx = -1;\n\n  function moreBtn(i, isOpen, ui) {\n    return '<button class=\"more\" type=\"button\" data-i=\"' + i + '\" aria-expanded=\"' + isOpen + '\">' +\n      (isOpen ? ui.less : ui.more) + ICON.chev + \"<\/button>\";\n  }\n\n  function render() {\n    var ui = UI[lang];\n    var cards = STEPS.map(function (s, i) {\n      var t = s[lang];\n      var isOpen = openIdx === i;\n      return (\n        '<div class=\"card' + (isOpen ? \" open\" : \"\") + '\">' +\n          '<div class=\"num-row\"><span class=\"num\">' + (i + 1) + '<\/span><span class=\"step-lbl\">' + ui.step + \" \" + (i + 1) + \"<\/span><\/div>\" +\n          \"<h3>\" + t.title + \"<\/h3>\" +\n          '<p class=\"summary\">' + t.summary + \"<\/p>\" +\n          '<div class=\"btns\">' + t.buttons + \"<\/div>\" +\n          moreBtn(i, isOpen, ui) +\n          '<div class=\"collapse inline-detail' + (isOpen ? \" show\" : \"\") + '\"><div><div class=\"detail\">' + t.detail + \"<\/div><\/div><\/div>\" +\n        \"<\/div>\"\n      );\n    }).join(\"\");\n\n    var tr = TRACK[lang];\n    var trOpen = openIdx === TRACK_IDX;\n    var track =\n      '<div class=\"track' + (trOpen ? \" open\" : \"\") + '\">' +\n        '<div class=\"band\">' +\n          '<div class=\"band-main\">' +\n            '<span class=\"band-tag\">' + ICON.clock + tr.tag + \"<\/span>\" +\n            '<div><div class=\"band-title\">' + tr.title + '<\/div><div class=\"band-sub\">' + tr.sub + \"<\/div><\/div>\" +\n          \"<\/div>\" +\n          '<div class=\"band-side\"><span class=\"pill amber\">' + tr.period + \"<\/span>\" + moreBtn(TRACK_IDX, trOpen, ui) + \"<\/div>\" +\n        \"<\/div>\" +\n        '<div class=\"band-dl-m\">' + ICON.flag + tr.deadline + \"<\/div>\" +\n        '<div class=\"collapse inline-detail' + (trOpen ? \" show\" : \"\") + '\"><div><div class=\"detail\">' + tr.detail + \"<\/div><\/div><\/div>\" +\n      \"<\/div>\" +\n      '<div class=\"deadline\">' + ICON.flag + \"<div><b>\" + tr.dlLabel + \"<\/b><span>\" + tr.deadline + \"<\/span><\/div><\/div>\";\n\n    var panelInner = \"\";\n    if (openIdx === TRACK_IDX) {\n      panelInner =\n        '<div class=\"panel-box amber\"><div class=\"panel-h\"><span class=\"num amber\">' + ICON.clock + \"<\/span>\" + tr.title + \"<\/div>\" +\n        '<div class=\"detail\">' + tr.detail + \"<\/div><\/div>\";\n    } else if (openIdx >= 0) {\n      var cur = STEPS[openIdx][lang];\n      panelInner =\n        '<div class=\"panel-box\"><div class=\"panel-h\"><span class=\"num\">' + (openIdx + 1) + \"<\/span>\" + cur.title + \"<\/div>\" +\n        '<div class=\"detail\">' + cur.detail + \"<\/div><\/div>\";\n    }\n    var panel = '<div class=\"collapse panel' + (openIdx >= 0 ? \" show\" : \"\") + '\"><div>' + panelInner + \"<\/div><\/div>\";\n\n    ROOT.innerHTML =\n      \"<style>\" + CSS + \"<\/style>\" +\n      '<div class=\"wrap\" lang=\"' + (lang === \"zh\" ? \"zh-TW\" : \"en\") + '\">' +\n        '<div class=\"head\">' +\n          '<div class=\"eyebrow\">TAICA\u00d7TKU<\/div>' +\n          '<h2 class=\"title\">' + ui.title + \"<\/h2>\" +\n          '<div class=\"lang\" role=\"group\" aria-label=\"Language\">' +\n            '<button type=\"button\" data-lang=\"zh\" aria-pressed=\"' + (lang === \"zh\") + '\">\u4e2d\u6587<\/button>' +\n            '<button type=\"button\" data-lang=\"en\" aria-pressed=\"' + (lang === \"en\") + '\">EN<\/button>' +\n          \"<\/div>\" +\n        \"<\/div>\" +\n        '<div class=\"steps\">' + cards + track + \"<\/div>\" +\n        panel +\n      \"<\/div>\";\n  }\n\n  ROOT.addEventListener(\"click\", function (e) {\n    var more = e.target.closest(\".more\");\n    if (more) {\n      var i = Number(more.getAttribute(\"data-i\"));\n      openIdx = openIdx === i ? -1 : i;\n      render();\n      var again = ROOT.querySelector('.more[data-i=\"' + i + '\"]');\n      if (again) again.focus({ preventScroll: true });\n      return;\n    }\n    var lb = e.target.closest(\".lang button\");\n    if (lb) {\n      lang = lb.getAttribute(\"data-lang\");\n      render();\n    }\n  });\n\n  render();\n})();\n<\/script>\n\n\n\n<!-- ============================================================\n  TAICA \u6578\u4f4d\u8b49\u66f8\uff08\u4e2d\u82f1\u6587\u8b49\u66f8\u7e2e\u5716\uff0b\u9ede\u5716\u770b\u5927\u5716\uff0b\u4e2d\uff0fEN \u5207\u63db\uff09\n  \u8aaa\u660e\uff1a\u672c\u5340\u584a\u9396\u5728 Shadow DOM \u5167\uff0c\u4e0d\u6703\u53d7\u5916\u90e8 WordPress \u6a23\u5f0f\u5f71\u97ff\uff0c\u4e5f\u4e0d\u6703\u6c61\u67d3\u5916\u90e8\u9801\u9762\u6a23\u5f0f\u3002\n  \u7dad\u8b77\u65b9\u5f0f\uff1a\u8b49\u66f8\u5716\u7247\u8207\u6587\u5b57\u96c6\u4e2d\u5728\u4e0b\u65b9 CERTS \u8207 TEXT\u3002\n============================================================ -->\n<!-- \u9032\u5834\u52d5\u756b\uff1a\u642d\u914d\u9801\u9762\u6700\u4e0b\u65b9\u7684\u300c\u52d5\u756b\u63a7\u5236\u5668\u300d\uff0c\u6372\u5230\u672c\u5340\u584a\u6642\u64ad\u653e\u4e00\u6b21 -->\n<div id=\"taicaCertHost\" data-anim data-anim-ms=\"1500\"><\/div>\n<script>\n(function () {\n  \"use strict\";\n  var HOST = document.getElementById(\"taicaCertHost\");\n  if (!HOST || HOST.shadowRoot) return;\n  var ROOT = HOST.attachShadow({ mode: \"open\" });\n  var CERTS = [\n    { src: \"\/aiee\/wp-content\/uploads\/2026\/05\/20260309-TAICA\u734e\u72c0\u4e2d\u6587\u52a0\u9644\u8a3b_\u6838\u5b9a\u7248.webp\", zh: \"\u4e2d\u6587\u7248\u8b49\u66f8\", en: \"Chinese version\" },\n    { src: \"\/aiee\/wp-content\/uploads\/2026\/05\/20260309-TAICA\u734e\u72c0\u82f1\u6587\u52a0\u9644\u8a3b_\u6838\u5b9a\u7248.webp\", zh: \"\u82f1\u6587\u7248\u8b49\u66f8\", en: \"English version\" }\n  ];\n  var SOURCE = \"https:\/\/taicatw.net\/for-student\/\";\n  var TEXT = {\n    zh: {\n      title: \"TAICA \u6578\u4f4d\u8b49\u66f8\",\n      desc: \"\u7b26\u5408 TAICA \u806f\u76df\u5b78\u5206\u5b78\u7a0b\u898f\u5b9a\u8005\uff0c\u5c07\u7372\u6559\u80b2\u90e8 TAICA \u806f\u76df\u9812\u767c\u7684\u6578\u4f4d\u8b49\u66f8\uff0c\u8b49\u660e\u60a8\u7684 AI \u5c08\u696d\u80fd\u529b\u3002\",\n      hint: \"\u9ede\u5716\u7247\u53ef\u958b\u555f\u5927\u5716\",\n      source: \"\u5716\u7247\u4f86\u6e90\uff1a\",\n      sourceName: \"\u5b78\u751f\u5c08\u5340 For Students \u2013 TAICA \u81fa\u7063\u5927\u5c08\u9662\u6821\u4eba\u5de5\u667a\u6167\u5b78\u7a0b\u806f\u76df\"\n    },\n    en: {\n      title: \"TAICA Digital Certificate\",\n      desc: \"Students who meet the requirements of the TAICA Credit Program will receive a digital certificate issued by the Taiwan AI College Alliance (TAICA). This certificate recognizes and validates your professional competence in Artificial Intelligence.\",\n      hint: \"Click an image to enlarge\",\n      source: \"Image source: \",\n      sourceName: \"For Students \u2013 Taiwan AI College Alliance (TAICA)\"\n    }\n  };\n  var CSS =\n    \/* ===== \u9032\u5834\u52d5\u756b\uff1a\u7531\u9801\u5c3e\u300c\u52d5\u756b\u63a7\u5236\u5668\u300d\u52a0\u4e0a class \u89f8\u767c\uff0c\u53ea\u64ad\u4e00\u6b21 ===== *\/\n    '@keyframes fadeUp{from{opacity:0;transform:translateY(18px);}to{opacity:1;transform:none;}}' +\n    '@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}' +\n    '@keyframes fadeLeft{from{opacity:0;transform:translateX(28px);}to{opacity:1;transform:none;}}' +\n    '@keyframes pop{0%{opacity:0;transform:scale(.6);}60%{opacity:1;transform:scale(1.1);}100%{opacity:1;transform:scale(1);}}' +\n    '@keyframes sweep{0%{left:-60%;opacity:1;}100%{left:130%;opacity:1;}}' +\n    '@media (prefers-reduced-motion:no-preference){' +\n      ':host(.anim-ready:not(.is-in)) .head,:host(.anim-ready:not(.is-in)) .card,:host(.anim-ready:not(.is-in)) .foot{opacity:0;}' +\n      ':host(.is-in:not(.anim-done)) .head{animation:fadeUp .6s ease-out both;}' +\n      ':host(.is-in:not(.anim-done)) .card{animation:fadeUp .6s cubic-bezier(.2,.7,.3,1) both;}' +\n      ':host(.is-in:not(.anim-done)) .card:nth-child(1){animation-delay:0.2s;}' +\n      ':host(.is-in:not(.anim-done)) .card:nth-child(2){animation-delay:0.35s;}' +\n      ':host(.is-in:not(.anim-done)) .foot{animation:fadeIn .5s ease-out .7s both;}' +\n      '.card{position:relative;overflow:hidden;}' +\n      '.card::after{content:\"\";position:absolute;top:0;left:-60%;width:40%;height:100%;pointer-events:none;opacity:0;background:linear-gradient(100deg,transparent,rgba(255,255,255,.65),transparent);transform:skewX(-18deg);}' +\n      '.card:hover::after{animation:sweep .9s ease-out;}' +\n    '}' +\n    ':host{all:initial;display:block;padding:40px 0;}@media (max-width:760px){:host{padding:28px 0;}}' +\n    '.wrap{font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans TC\",\"Microsoft JhengHei\",sans-serif;' +\n      'color:#2b2b2b;max-width:1200px;margin:0 auto;box-sizing:border-box;}' +\n    '.wrap *{box-sizing:border-box;}' +\n    '.head{position:relative;text-align:center;margin:0 0 22px;}' +\n    '.eyebrow{display:inline-flex;align-items:center;gap:14px;color:#a11d21;font-size:15px;letter-spacing:1px;}' +\n    '.eyebrow::before,.eyebrow::after{content:\"\";width:60px;height:6px;border-top:2px solid #a11d21;border-bottom:2px solid #a11d21;}' +\n    '.title{margin:6px 0 8px;font-size:30px;font-weight:700;color:#1f2329;letter-spacing:2px;line-height:1.4;}' +\n    '.desc{max-width:820px;margin:0 auto;font-size:15.5px;line-height:1.85;color:#444;}' +\n    '.lang{position:absolute;right:0;top:0;display:inline-flex;padding:3px;border:1px solid #e3e6ea;border-radius:999px;background:#fff;}' +\n    '.lang button{border:none;background:transparent;padding:6px 14px;border-radius:999px;font-size:13px;font-weight:600;color:#6b7280;cursor:pointer;font-family:inherit;}' +\n    '.lang button[aria-pressed=\"true\"]{background:#1976d2;color:#fff;}' +\n    '.lang button:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(74,144,226,.35);}' +\n    '.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;max-width:960px;margin:0 auto;}' +\n    '.card{display:block;padding:14px;border:1px solid #e8e8e8;border-radius:14px;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.04);' +\n      'text-decoration:none;color:inherit;transition:border-color .2s,box-shadow .2s,transform .2s;}' +\n    '.card:hover{border-color:#bcd6f2;transform:translateY(-2px);box-shadow:0 6px 18px rgba(25,118,210,.10);}' +\n    '.card:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(74,144,226,.35);}' +\n    '.pic{height:300px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:#f7f9fc;overflow:hidden;}' +\n    '.pic img{max-width:100%;max-height:100%;object-fit:contain;display:block;}' +\n    '.cap{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:10px;font-size:15px;font-weight:700;color:#1f2329;}' +\n    '.cap svg{color:#1976d2;}' +\n    '.foot{margin-top:14px;text-align:center;font-size:13px;color:#8a8f98;line-height:1.7;}' +\n    '.foot a{color:#1976d2;text-decoration:none;font-weight:600;}' +\n    '.foot a:hover{text-decoration:underline;}' +\n    '@media (max-width:760px){' +\n      '.title{font-size:25px;}' +\n      '.eyebrow::before,.eyebrow::after{width:40px;}' +\n      '.lang{position:static;display:flex;width:max-content;margin:0 auto 14px;}' +\n      '.desc{font-size:15px;text-align:justify;}' +\n      '.wrap[lang=\"en\"] .desc{text-align:left;}' +\n      '.grid{grid-template-columns:1fr;gap:14px;}' +\n      '.pic{height:auto;min-height:180px;}' +\n    '}';\n  var ZOOM = '<svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"7\"\/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"\/><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"\/><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"\/><\/svg>';\n  var lang = \"zh\";\n  function render() {\n    var t = TEXT[lang];\n    var cards = CERTS.map(function (c) {\n      return (\n        '<a class=\"card\" href=\"' + c.src + '\" target=\"_blank\" rel=\"noopener\">' +\n          '<div class=\"pic\"><' + 'img src=\"' + c.src + '\" alt=\"' + c[lang] + '\" loading=\"lazy\"><\/div>' +\n          '<div class=\"cap\">' + c[lang] + ZOOM + \"<\/div>\" +\n        \"<\/a>\"\n      );\n    }).join(\"\");\n    ROOT.innerHTML =\n      \"<style>\" + CSS + \"<\/style>\" +\n      '<div class=\"wrap\" lang=\"' + (lang === \"zh\" ? \"zh-TW\" : \"en\") + '\">' +\n        '<div class=\"head\">' +\n          '<div class=\"lang\" role=\"group\" aria-label=\"Language\">' +\n            '<button type=\"button\" data-lang=\"zh\" aria-pressed=\"' + (lang === \"zh\") + '\">\u4e2d\u6587<\/button>' +\n            '<button type=\"button\" data-lang=\"en\" aria-pressed=\"' + (lang === \"en\") + '\">EN<\/button>' +\n          \"<\/div>\" +\n          '<div class=\"eyebrow\">TAICA\u00d7TKU<\/div>' +\n          '<h2 class=\"title\">' + t.title + \"<\/h2>\" +\n          '<p class=\"desc\">' + t.desc + \"<\/p>\" +\n        \"<\/div>\" +\n        '<div class=\"grid\">' + cards + \"<\/div>\" +\n        '<div class=\"foot\">' + t.hint + \"\uff5c\" + t.source + '<a href=\"' + SOURCE + '\" target=\"_blank\" rel=\"noopener\">' + t.sourceName + \"<\/a><\/div>\" +\n      \"<\/div>\";\n  }\n  ROOT.addEventListener(\"click\", function (e) {\n    var b = e.target.closest(\".lang button\");\n    if (!b) return;\n    lang = b.getAttribute(\"data-lang\");\n    render();\n  });\n  render();\n})();\n<\/script>\n\n\n\n<!-- ============================================================\n  TAICA \u5e38\u898b\u554f\u984c\uff08\u624b\u98a8\u7434\u5f0f\u554f\u7b54\uff0b\u4e2d\uff0fEN \u5207\u63db\uff09\n  \u8aaa\u660e\uff1a\u672c\u5340\u584a\u9396\u5728 Shadow DOM \u5167\uff0c\u4e0d\u6703\u53d7\u5916\u90e8 WordPress \u6a23\u5f0f\u5f71\u97ff\uff0c\u4e5f\u4e0d\u6703\u6c61\u67d3\u5916\u90e8\u9801\u9762\u6a23\u5f0f\u3002\n  \u7dad\u8b77\u65b9\u5f0f\uff1a\u554f\u7b54\u5167\u5bb9\u96c6\u4e2d\u5728\u4e0b\u65b9 FAQ \u9663\u5217\uff0c\u65b0\u589e\u554f\u984c\u53ea\u8981\u7167\u683c\u5f0f\u591a\u52a0\u4e00\u7b46\u3002\n  \u6ce8\u610f\uff1a\u7a0b\u5f0f\u5167\u4e0d\u8981\u76f4\u63a5\u8f38\u5165\u534a\u5f62\u7684 and \u8a18\u865f\uff08WordPress \u53ef\u80fd\u6703\u6539\u58de\uff09\uff0c\u9700\u8981\u6642\u8acb\u5beb\u6210 \\u0026\uff08\u53ef\u53c3\u8003\u4e0b\u65b9 AMP \u8b8a\u6578\uff09\u3002\n============================================================ -->\n<!-- \u9032\u5834\u52d5\u756b\uff1a\u642d\u914d\u9801\u9762\u6700\u4e0b\u65b9\u7684\u300c\u52d5\u756b\u63a7\u5236\u5668\u300d\uff0c\u6372\u5230\u672c\u5340\u584a\u6642\u64ad\u653e\u4e00\u6b21 -->\n<div id=\"taicaFaqHost\" data-anim data-anim-ms=\"1300\"><\/div>\n<script>\n(function () {\n  \"use strict\";\n  var HOST = document.getElementById(\"taicaFaqHost\");\n  if (!HOST || HOST.shadowRoot) return;\n  var ROOT = HOST.attachShadow({ mode: \"open\" });\n  var AMP = \"\\u0026\";\n  var QA = \"Q\" + AMP + \"A\";\n  var CREDIT_URL = \"https:\/\/athx.acad.tku.edu.tw\/get_page?t=rtdoc\" + AMP + \"rtdoc_id=ATGX004\" + AMP + \"lang=tw\";\n  var EXT = '<svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"\/><polyline points=\"15 3 21 3 21 9\"\/><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"\/><\/svg>';\n  var CHEV = '<svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg>';\n  function ref(text, btn) {\n    return '<div class=\"ref\"><span>\u2605 ' + text + '<\/span><a class=\"btn\" href=\"' + CREDIT_URL + '\" target=\"_blank\" rel=\"noopener\">' + btn + EXT + \"<\/a><\/div>\";\n  }\n  function group(label, html) {\n    return '<div class=\"grp\"><div class=\"grp-k\">' + label + '<\/div><div class=\"grp-v\">' + html + \"<\/div><\/div>\";\n  }\n  \/\/ ------------------------------------------------------------\n  \/\/ \u554f\u7b54\u5167\u5bb9\n  \/\/ ------------------------------------------------------------\n  var FAQ = [\n    {\n      zh: {\n        q: \"TAICA\u7684\u8ab2\u53ef\u4ee5\u7b97\u7562\u696d\u5b78\u5206\u55ce\uff1f\",\n        a: \"<p>\u53ef\u4ee5\u8a08\u5165\u7562\u696d\u5b78\u5206\uff0c\u4f46\u5168\u82f1\u8a9e\u73ed\u5b78\u751f\u50c5\u627f\u8a8d\u5168\u82f1\u8a9e\u6388\u8ab2\u8ab2\u7a0b\u70ba\u7562\u696d\u5b78\u5206\uff0c\u7814\u7a76\u751f\u4fee\u7fd2\u5927\u5b78\u90e8\u8ab2\u7a0b\u5747\u4e0d\u5217\u5165\u7562\u696d\u5b78\u5206\u6578\u8a08\u7b97\u3002<\/p>\" +\n          ref(\"\u5b78\u5206\u76f8\u95dc\uff1a\u6559\u52d9\u8655\u8a3b\u518a\u8ab2\u52d9\u767c\u5c55\u4e2d\u5fc3\u7db2\u9801 \u2192 \" + QA + \" \u2192 \u6210\u7e3e\u696d\u52d9\u76f8\u95dc\", \"\u67e5\u770b\u6210\u7e3e\u696d\u52d9\u76f8\u95dc \" + QA)\n      },\n      en: {\n        q: \"Can TAICA courses be counted toward graduation credits?\",\n        a: \"<p>Yes, TAICA courses may be counted toward graduation credits. However, for students in English-taught programs, only courses conducted entirely in English may be recognized as graduation credits. In addition, graduate students who take undergraduate-level TAICA courses cannot include those credits in their graduation credit count.<\/p>\" +\n          ref(\"For credit-related information, please refer to the Office of Academic Affairs \u2192 Center for Registration-Curriculum Development \u2192 \" + QA + \" \u2192 Grading and Credit Regulations.\", \"Grading and Credit \" + QA)\n      }\n    },\n    {\n      zh: {\n        q: \"\u7814\u7a76\u751f\u53ef\u4ee5\u4feeTAICA\u8ab2\u7a0b\u55ce\uff1f\",\n        a: \"<p>\u53ef\u4ee5\uff0c\u4f46\u7814\u7a76\u751f\u4fee\u7fd2\u5927\u5b78\u90e8\u8ab2\u7a0b\u5747\u4e0d\u5217\u5165\u7562\u696d\u5b78\u5206\u6578\u8a08\u7b97\u3002<\/p>\" +\n          group(\"\u535a\u58eb\u73ed\u5b78\u751f\", \"\u4fee\u7fd2\u4ed6\u7cfb\u6240\uff08\u7d44\uff09\u535a\u58eb\u73ed\u8ab2\u7a0b\u81f3\u591a\u4ee5 12 \u5b78\u5206\u8a08\u7b97\u65bc\u7562\u696d\u5b78\u5206\u6578\u5167\u3002\u4fee\u7fd2\u78a9\u58eb\u73ed\u3001\u78a9\u58eb\u5728\u8077\u5c08\u73ed\u8ab2\u7a0b\u4e0d\u5217\u5165\u7562\u696d\u5b78\u5206\u6578\u8a08\u7b97\uff0c\u60df\u4fee\u7fd2\u540c\u7cfb\u6240\u78a9\u58eb\u73ed\u3001\u78a9\u58eb\u5728\u8077\u5c08\u73ed\u8ab2\u7a0b\u81f3\u591a\u4ee5 9 \u5b78\u5206\u8a08\u7b97\u65bc\u7562\u696d\u5b78\u5206\u6578\u5167\u3002\") +\n          group(\"\u78a9\u58eb\u73ed\u3001\u78a9\u58eb\u5728\u8077\u5c08\u73ed\u5b78\u751f\", \"\u4fee\u7fd2\u540c\u7cfb\u6240\u535a\u58eb\u73ed\u8ab2\u7a0b\u5747\u8a08\u7b97\u65bc\u7562\u696d\u5b78\u5206\u6578\u5167\u3002\u4fee\u7fd2\u4ed6\u7cfb\u6240\uff08\u7d44\uff09\u78a9\u58eb\u73ed\u3001\u78a9\u58eb\u5728\u8077\u5c08\u73ed\u3001\u535a\u58eb\u73ed\u8ab2\u7a0b\u81f3\u591a\u4ee5 12 \u5b78\u5206\u8a08\u7b97\u65bc\u7562\u696d\u5b78\u5206\u6578\u5167\u3002\") +\n          '<p class=\"note\">\u53e6\u6709\u898f\u5b9a\u4e4b\u5b78\u7cfb\uff0c\u9700\u6d3d\u8a62\u5404\u7cfb\u3002<\/p>' +\n          ref(\"\u5b78\u5206\u76f8\u95dc\uff1a\u6559\u52d9\u8655\u8a3b\u518a\u8ab2\u52d9\u767c\u5c55\u4e2d\u5fc3\u7db2\u9801 \u2192 \" + QA + \" \u2192 \u6210\u7e3e\u696d\u52d9\u76f8\u95dc\", \"\u67e5\u770b\u6210\u7e3e\u696d\u52d9\u76f8\u95dc \" + QA)\n      },\n      en: {\n        q: \"Can graduate students take TAICA courses?\",\n        a: \"<p>Yes, graduate students are allowed to take TAICA courses. However, undergraduate-level courses taken by graduate students will not be counted toward graduation credits.<\/p>\" +\n          group(\"Ph.D. students\", \"Up to 12 credits from doctoral courses offered by other departments or programs may be counted toward graduation. Credits from master\u2019s or in-service master\u2019s programs will not be counted toward Ph.D. graduation credits. However, up to 9 credits from master\u2019s or in-service master\u2019s courses within the same department or program may be counted.\") +\n          group(\"Master\u2019s and in-service master\u2019s students\", \"Doctoral-level courses taken within the same department or program will be counted toward graduation credits. Courses taken from other departments or programs (master\u2019s, in-service master\u2019s, or doctoral level) may be counted up to a maximum of 12 credits.\") +\n          '<p class=\"note\">For programs with specific regulations, please consult the respective department.<\/p>' +\n          ref(\"For credit-related information, please refer to the Office of Academic Affairs \u2192 Center for Registration-Curriculum Development \u2192 \" + QA + \" \u2192 Grading and Credit Regulations.\", \"Grading and Credit \" + QA)\n      }\n    },\n    {\n      zh: {\n        q: \"\u8981\u600e\u9ebc\u7533\u8acbTAICA\u5b78\u5206\u5b78\u7a0b\uff1f\",\n        a: \"<p>\u4f9d\u672c\u6821\u884c\u4e8b\u66c6\u516c\u544a\u6642\u9593\uff0c\u5411\u672c\u6821AI\u502b\u7406\u6559\u80b2\u8cc7\u6e90\u4e2d\u5fc3\u8fa6\u516c\u5ba4\u7dda\u4e0a\u63d0\u51fa\u7533\u8acb\u3002\u7533\u8acb\u4f5c\u696d\u5c07\u900f\u904e\u7dda\u4e0a\u8868\u55ae\u8fa6\u7406\uff0c\u8868\u55ae\u6bcf\u5e74\u958b\u653e\u5169\u6b21\uff0c\u5206\u5225\u65bc\u6bcf\u5b78\u671f\u7b2c\u5341\u9031\u8d77\u53d7\u7406\u7533\u8acb\uff0c\u7533\u8acb\u671f\u9593\u70ba\u671f\u56db\u9031\uff0c\u4e26\u4f9d\u898f\u5b9a\u5b8c\u6210\u76f8\u95dc\u7533\u8acb\u7a0b\u5e8f\u3002<\/p>\" +\n          \"<p>\u7533\u8acb\u5b78\u5206\u5b78\u7a0b\u524d\uff0c\u5df2\u4fee\u7fd2\u5b78\u7a0b\u4e4b\u6307\u5b9a\u79d1\u76ee\uff0c\u5f97\u5217\u5165\u6240\u4fee\u7fd2\u5b78\u5206\u4e4b\u5be9\u67e5\u3002<\/p>\"\n      },\n      en: {\n        q: \"How do I apply for the TAICA Credit Program?\",\n        a: \"<p>According to the academic calendar, students may apply online through the Center for AI Ethics Education. The online application form is available twice a year, starting from Week 10 of each semester, and remains open for four weeks. Applicants must complete all required procedures within the designated period.<\/p>\" +\n          \"<p>Students who have already completed designated courses before applying for the program may request to include those courses in the credit review.<\/p>\"\n      }\n    }\n  ];\n  var UI = {\n    zh: { title: \"\u5e38\u898b\u554f\u984c\", sub: \"\u9ede\u9078\u554f\u984c\u67e5\u770b\u89e3\u7b54\" },\n    en: { title: \"FAQ\", sub: \"Select a question to view the answer\" }\n  };\n  \/\/ ------------------------------------------------------------\n  \/\/ \u6a23\u5f0f\n  \/\/ ------------------------------------------------------------\n  var CSS =\n    \/* ===== \u9032\u5834\u52d5\u756b\uff1a\u7531\u9801\u5c3e\u300c\u52d5\u756b\u63a7\u5236\u5668\u300d\u52a0\u4e0a class \u89f8\u767c\uff0c\u53ea\u64ad\u4e00\u6b21 ===== *\/\n    '@keyframes fadeUp{from{opacity:0;transform:translateY(18px);}to{opacity:1;transform:none;}}' +\n    '@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}' +\n    '@keyframes fadeLeft{from{opacity:0;transform:translateX(28px);}to{opacity:1;transform:none;}}' +\n    '@keyframes pop{0%{opacity:0;transform:scale(.6);}60%{opacity:1;transform:scale(1.1);}100%{opacity:1;transform:scale(1);}}' +\n    '@media (prefers-reduced-motion:no-preference){' +\n      ':host(.anim-ready:not(.is-in)) .head,:host(.anim-ready:not(.is-in)) .list{opacity:0;}' +\n      ':host(.is-in:not(.anim-done)) .head{animation:fadeUp .6s ease-out both;}' +\n      ':host(.is-in:not(.anim-done)) .list{animation:fadeUp .6s cubic-bezier(.2,.7,.3,1) .2s both;}' +\n      '.item.open .a{animation:fadeIn .35s ease-out both;}' +\n    '}' +\n    ':host{all:initial;display:block;padding:40px 0;}@media (max-width:760px){:host{padding:28px 0;}}' +\n    '.wrap{font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans TC\",\"Microsoft JhengHei\",sans-serif;' +\n      'color:#2b2b2b;max-width:1200px;margin:0 auto;box-sizing:border-box;}' +\n    '.wrap *{box-sizing:border-box;}' +\n    '.head{position:relative;text-align:center;margin:0 0 24px;}' +\n    '.eyebrow{display:inline-flex;align-items:center;gap:14px;color:#a11d21;font-size:15px;letter-spacing:1px;}' +\n    '.eyebrow::before,.eyebrow::after{content:\"\";width:60px;height:6px;border-top:2px solid #a11d21;border-bottom:2px solid #a11d21;}' +\n    '.title{margin:6px 0 4px;font-size:30px;font-weight:700;color:#1f2329;letter-spacing:2px;line-height:1.4;}' +\n    '.sub{margin:0;font-size:14.5px;color:#6b7280;}' +\n    '.lang{position:absolute;right:0;bottom:6px;display:inline-flex;padding:3px;border:1px solid #e3e6ea;border-radius:999px;background:#fff;}' +\n    '.lang button{border:none;background:transparent;padding:6px 14px;border-radius:999px;font-size:13px;font-weight:600;color:#6b7280;cursor:pointer;font-family:inherit;}' +\n    '.lang button[aria-pressed=\"true\"]{background:#1976d2;color:#fff;}' +\n    '.lang button:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(74,144,226,.35);}' +\n    '.list{border:1px solid #e8e8e8;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,.04);}' +\n    '.item{border-bottom:1px solid #f0f0f0;}' +\n    '.item:last-child{border-bottom:none;}' +\n    '.q{width:100%;display:grid;grid-template-columns:36px minmax(0,1fr) 24px;align-items:center;gap:12px;padding:18px 22px;border:none;' +\n      'background:transparent;text-align:left;cursor:pointer;font-family:inherit;color:inherit;transition:background .18s;}' +\n    '.q:hover{background:#f7faff;}' +\n    '.q:focus-visible{outline:none;box-shadow:inset 0 0 0 2px rgba(74,144,226,.55);}' +\n    '.item.open .q{background:#f3f8fe;}' +\n    '.qn{width:32px;height:32px;border-radius:50%;background:#e3f2fd;color:#1976d2;font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center;}' +\n    '.item.open .qn{background:#1976d2;color:#fff;}' +\n    '.qt{font-size:16.5px;font-weight:700;color:#1f2329;line-height:1.5;}' +\n    '.arr{display:flex;color:#9aa0a8;transition:transform .25s,color .2s;}' +\n    '.item.open .arr{transform:rotate(180deg);color:#1976d2;}' +\n    '.panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .28s ease;}' +\n    '.item.open .panel{grid-template-rows:1fr;}' +\n    '.inner{overflow:hidden;min-height:0;}' +\n    '.a{padding:4px 22px 22px 70px;background:#f3f8fe;}' +\n    '.a p{margin:0 0 12px;font-size:15px;line-height:1.85;color:#333;}' +\n    '.a p.note{font-size:14px;color:#6b7280;}' +\n    '.grp{margin:0 0 12px;padding:12px 16px;border-radius:10px;background:#fff;border:1px solid #e3e8ef;}' +\n    '.grp-k{font-size:13px;font-weight:700;color:#1976d2;letter-spacing:.5px;margin-bottom:4px;}' +\n    '.grp-v{font-size:14.5px;line-height:1.8;color:#333;}' +\n    '.ref{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;margin-top:4px;padding:12px 16px;' +\n      'border-radius:10px;background:#fff8e6;color:#8a5a00;font-size:14px;line-height:1.6;}' +\n    '.btn{flex-shrink:0;display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;background:#fff;color:#1976d2;' +\n      'border:1px solid rgba(25,118,210,.25);text-decoration:none;font-size:13.5px;font-weight:600;transition:background .2s;}' +\n    '.btn:hover{background:#e3f2fd;}' +\n    '@media (max-width:760px){' +\n      '.head{margin-bottom:20px;}' +\n      '.title{font-size:25px;}' +\n      '.eyebrow::before,.eyebrow::after{width:40px;}' +\n      '.lang{position:static;display:flex;width:max-content;margin:12px auto 0;}' +\n      '.q{grid-template-columns:30px minmax(0,1fr) 20px;gap:10px;padding:15px 14px;}' +\n      '.qn{width:28px;height:28px;font-size:13px;}' +\n      '.qt{font-size:15.5px;}' +\n      '.a{padding:4px 14px 18px;}' +\n      '.btn{width:100%;justify-content:center;}' +\n    '}';\n  \/\/ ------------------------------------------------------------\n  \/\/ \u7e6a\u88fd\u8207\u4e92\u52d5\n  \/\/ ------------------------------------------------------------\n  var lang = \"zh\";\n  var open = FAQ.map(function () { return false; });   \/\/ \u9810\u8a2d\u5168\u90e8\u6536\u5408\n  function render() {\n    var ui = UI[lang];\n    var items = FAQ.map(function (f, i) {\n      var t = f[lang];\n      var id = \"taica-faq-\" + i;\n      return (\n        '<div class=\"item' + (open[i] ? \" open\" : \"\") + '\">' +\n          '<button class=\"q\" type=\"button\" data-i=\"' + i + '\" aria-expanded=\"' + open[i] + '\" aria-controls=\"' + id + '\">' +\n            '<span class=\"qn\">Q' + (i + 1) + \"<\/span>\" +\n            '<span class=\"qt\">' + t.q + \"<\/span>\" +\n            '<span class=\"arr\" aria-hidden=\"true\">' + CHEV + \"<\/span>\" +\n          \"<\/button>\" +\n          '<div class=\"panel\" id=\"' + id + '\" role=\"region\"><div class=\"inner\"><div class=\"a\">' + t.a + \"<\/div><\/div><\/div>\" +\n        \"<\/div>\"\n      );\n    }).join(\"\");\n    ROOT.innerHTML =\n      \"<style>\" + CSS + \"<\/style>\" +\n      '<div class=\"wrap\" lang=\"' + (lang === \"zh\" ? \"zh-TW\" : \"en\") + '\">' +\n        '<div class=\"head\">' +\n          '<div class=\"eyebrow\">TAICA\u00d7TKU<\/div>' +\n          '<h2 class=\"title\">' + ui.title + \"<\/h2>\" +\n          '<p class=\"sub\">' + ui.sub + \"<\/p>\" +\n          '<div class=\"lang\" role=\"group\" aria-label=\"Language\">' +\n            '<button type=\"button\" data-lang=\"zh\" aria-pressed=\"' + (lang === \"zh\") + '\">\u4e2d\u6587<\/button>' +\n            '<button type=\"button\" data-lang=\"en\" aria-pressed=\"' + (lang === \"en\") + '\">EN<\/button>' +\n          \"<\/div>\" +\n        \"<\/div>\" +\n        '<div class=\"list\">' + items + \"<\/div>\" +\n      \"<\/div>\";\n  }\n  ROOT.addEventListener(\"click\", function (e) {\n    var q = e.target.closest(\".q\");\n    if (q) {\n      var i = Number(q.getAttribute(\"data-i\"));\n      open[i] = !open[i];\n      var item = q.parentNode;\n      item.classList.toggle(\"open\", open[i]);\n      q.setAttribute(\"aria-expanded\", open[i] ? \"true\" : \"false\");\n      return;\n    }\n    var lb = e.target.closest(\".lang button\");\n    if (lb) {\n      lang = lb.getAttribute(\"data-lang\");\n      render();\n    }\n  });\n  render();\n})();\n<\/script>\n\n\n\n<!-- ============================================================\n  TAICA \u806f\u7d61\u8cc7\u8a0a\u8207\u76f8\u95dc\u7db2\u7ad9\uff083 \u5f35\u806f\u7d61\u5361\uff0b\u53ef\u9ede\u64ca\u64a5\u865f\uff0f\u5bc4\u4fe1\uff0b\u4e2d\uff0fEN \u5207\u63db\uff09\n  \u8aaa\u660e\uff1a\u672c\u5340\u584a\u9396\u5728 Shadow DOM \u5167\uff0c\u4e0d\u6703\u53d7\u5916\u90e8 WordPress \u6a23\u5f0f\u5f71\u97ff\uff0c\u4e5f\u4e0d\u6703\u6c61\u67d3\u5916\u90e8\u9801\u9762\u6a23\u5f0f\u3002\n  \u7dad\u8b77\u65b9\u5f0f\uff1a\u806f\u7d61\u4eba\u8207\u96fb\u8a71\u96c6\u4e2d\u5728\u4e0b\u65b9 CARDS\uff1b\u5e95\u90e8\u500b\u8cc7\u76f8\u95dc\u9023\u7d50\u5728 FOOT\uff08\u7248\u6b0a\u5ba3\u544a\u7531\u7db2\u7ad9\u9801\u5c3e\u7d71\u4e00\u986f\u793a\uff09\u3002\n    \u30fbtel\uff1a\u53ef\u64a5\u865f\u7684\u865f\u78bc\u683c\u5f0f\uff08+886 \u958b\u982d\uff0c\u9017\u865f\u5f8c\u70ba\u5206\u6a5f\uff09\uff1b\u7559\u7a7a\u5247\u53ea\u986f\u793a\u6587\u5b57\u3001\u4e0d\u505a\u64a5\u865f\u9023\u7d50\u3002\n============================================================ -->\n<!-- \u9032\u5834\u52d5\u756b\uff1a\u642d\u914d\u9801\u9762\u6700\u4e0b\u65b9\u7684\u300c\u52d5\u756b\u63a7\u5236\u5668\u300d\uff0c\u6372\u5230\u672c\u5340\u584a\u6642\u64ad\u653e\u4e00\u6b21 -->\n<div id=\"taicaContactHost\" data-anim data-anim-ms=\"1400\"><\/div>\n<script>\n(function () {\n  \"use strict\";\n  var HOST = document.getElementById(\"taicaContactHost\");\n  if (!HOST || HOST.shadowRoot) return;\n  var ROOT = HOST.attachShadow({ mode: \"open\" });\n  var ICON = {\n    tel: '<svg viewBox=\"0 0 24 24\" width=\"15\" height=\"15\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z\"\/><\/svg>',\n    mail: '<svg viewBox=\"0 0 24 24\" width=\"15\" height=\"15\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"\/><polyline points=\"22 6 12 13 2 6\"\/><\/svg>',\n    ext: '<svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"\/><polyline points=\"15 3 21 3 21 9\"\/><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"\/><\/svg>'\n  };\n  \/\/ ------------------------------------------------------------\n  \/\/ \u806f\u7d61\u8cc7\u6599\n  \/\/ ------------------------------------------------------------\n  var CARDS = [\n    {\n      link: \"https:\/\/aiee.acad.tku.edu.tw\/aiee\/?page_id=2668\",\n      zh: { title: \"AI\u502b\u7406\u6559\u80b2\u8cc7\u6e90\u4e2d\u5fc3\", sub: \"\" },\n      en: { title: \"Center for AI Ethics Education\", sub: \"\" },\n      rows: [\n        { name: \"\u9673\u51a0\u7db8\", tel: \"+886226215656,2211\", telText: { zh: \"(02)2621-5656 \u5206\u6a5f 2211\", en: \"(02)2621-5656 ext. 2211\" } },\n        { name: \"\u8521\u7389\u971c\", tel: \"+886226215656,2363\", telText: { zh: \"(02)2621-5656 \u5206\u6a5f 2363\", en: \"(02)2621-5656 ext. 2363\" } }\n      ],\n      mail: \"athx@oa.tku.edu.tw\"\n    },\n    {\n      link: \"https:\/\/taicatw.net\/\",\n      zh: { title: \"TAICA \u81fa\u7063\u5927\u5c08\u9662\u6821\u4eba\u5de5\u667a\u6167\u5b78\u7a0b\u806f\u76df\", sub: \"NTU COOL \u5e73\u53f0\" },\n      en: { title: \"Taiwan AI College Alliance (TAICA)\", sub: \"NTU COOL Platform\" },\n      rows: [\n        { name: \"\", tel: \"+88635715131,35839\", telText: { zh: \"(03)571-5131 \u5206\u6a5f 35839\", en: \"(03)571-5131 ext. 35839\" } }\n      ],\n      mail: \"taica@taica-tw.com\",\n      subRows: [\n        { name: \"\", tel: \"\", telText: { zh: \"33663367 \u5206\u6a5f 594\", en: \"33663367 ext. 594\" } }\n      ],\n      subMail: \"ntucool@ntu.edu.tw\"\n    },\n    {\n      link: \"\",\n      zh: { title: \"\u9078\u8ab2\u76f8\u95dc\u554f\u984c\", sub: \"\" },\n      en: { title: \"Course Registration Inquiries\", sub: \"\" },\n      unit: { zh: \"\u8a3b\u518a\u8ab2\u52d9\u767c\u5c55\u4e2d\u5fc3\", en: \"Center for Registration-Curriculum Development\" },\n      rows: [\n        { name: \"\u8212\u5b9c\u840d\", tel: \"+886226215656,2375\", telText: { zh: \"(02)2621-5656 \u5206\u6a5f 2375\", en: \"(02)2621-5656 ext. 2375\" } }\n      ],\n      mail: \"athx@oa.tku.edu.tw\"\n    }\n  ];\n  var FOOT = {\n    links: [\n      { href: \"http:\/\/classic.tku.edu.tw\/pdp.asp\", zh: \"\u500b\u8cc7\u653f\u7b56\", en: \"Personal Data Policy\" },\n      { href: \"http:\/\/classic.tku.edu.tw\/privacy.asp\", zh: \"\u96b1\u79c1\u6b0a\u653f\u7b56\", en: \"Privacy Policy\" },\n      { href: \"http:\/\/classic.tku.edu.tw\/notify.asp\", zh: \"\u500b\u4eba\u8cc7\u6599\u544a\u77e5\u8072\u660e\", en: \"Personal Data Notice\" }\n    ]\n  };\n  var UI = {\n    zh: { title: \"\u806f\u7d61\u8cc7\u8a0a\u8207\u76f8\u95dc\u7db2\u7ad9\", tel: \"\u96fb\u8a71\", mail: \"\u4fe1\u7bb1\" },\n    en: { title: \"Contact Information and Relevant Websites\", tel: \"Tel\", mail: \"Email\" }\n  };\n  \/\/ ------------------------------------------------------------\n  \/\/ \u6a23\u5f0f\n  \/\/ ------------------------------------------------------------\n  var CSS =\n    \/* ===== \u9032\u5834\u52d5\u756b\uff1a\u7531\u9801\u5c3e\u300c\u52d5\u756b\u63a7\u5236\u5668\u300d\u52a0\u4e0a class \u89f8\u767c\uff0c\u53ea\u64ad\u4e00\u6b21 ===== *\/\n    '@keyframes fadeUp{from{opacity:0;transform:translateY(18px);}to{opacity:1;transform:none;}}' +\n    '@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}' +\n    '@keyframes fadeLeft{from{opacity:0;transform:translateX(28px);}to{opacity:1;transform:none;}}' +\n    '@keyframes pop{0%{opacity:0;transform:scale(.6);}60%{opacity:1;transform:scale(1.1);}100%{opacity:1;transform:scale(1);}}' +\n    '@media (prefers-reduced-motion:no-preference){' +\n      ':host(.anim-ready:not(.is-in)) .head,:host(.anim-ready:not(.is-in)) .card,:host(.anim-ready:not(.is-in)) .foot{opacity:0;}' +\n      ':host(.is-in:not(.anim-done)) .head{animation:fadeUp .6s ease-out both;}' +\n      ':host(.is-in:not(.anim-done)) .card{animation:fadeUp .5s cubic-bezier(.2,.7,.3,1) both;}' +\n      ':host(.is-in:not(.anim-done)) .card:nth-child(1){animation-delay:0.15s;}' +\n      ':host(.is-in:not(.anim-done)) .card:nth-child(2){animation-delay:0.27s;}' +\n      ':host(.is-in:not(.anim-done)) .card:nth-child(3){animation-delay:0.39s;}' +\n      ':host(.is-in:not(.anim-done)) .foot{animation:fadeIn .5s ease-out .6s both;}' +\n    '}' +\n    ':host{all:initial;display:block;padding:40px 0;}@media (max-width:760px){:host{padding:28px 0;}}' +\n    '.wrap{font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans TC\",\"Microsoft JhengHei\",sans-serif;' +\n      'color:#2b2b2b;max-width:1200px;margin:0 auto;box-sizing:border-box;}' +\n    '.wrap *{box-sizing:border-box;}' +\n    '.head{position:relative;text-align:center;margin:0 0 24px;}' +\n    '.eyebrow{display:inline-flex;align-items:center;gap:14px;color:#a11d21;font-size:15px;letter-spacing:1px;}' +\n    '.eyebrow::before,.eyebrow::after{content:\"\";width:60px;height:6px;border-top:2px solid #a11d21;border-bottom:2px solid #a11d21;}' +\n    '.title{margin:6px 0 0;font-size:30px;font-weight:700;color:#1f2329;letter-spacing:2px;line-height:1.4;}' +\n    '.lang{position:absolute;right:0;bottom:4px;display:inline-flex;padding:3px;border:1px solid #e3e6ea;border-radius:999px;background:#fff;}' +\n    '.lang button{border:none;background:transparent;padding:6px 14px;border-radius:999px;font-size:13px;font-weight:600;color:#6b7280;cursor:pointer;font-family:inherit;}' +\n    '.lang button[aria-pressed=\"true\"]{background:#1976d2;color:#fff;}' +\n    '.lang button:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(74,144,226,.35);}' +\n    '.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;}' +\n    '.card{padding:20px 20px 18px;border:1px solid #e8e8e8;border-radius:14px;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.04);border-top:4px solid #1976d2;}' +\n    '.card:first-child{border-top-color:#a11d21;}' +\n    '.ct{margin:0 0 12px;font-size:17px;font-weight:700;color:#1f2329;line-height:1.45;}' +\n    '.ct a{color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:6px;}' +\n    '.ct a svg{color:#1976d2;flex-shrink:0;}' +\n    '.ct a:hover{color:#1976d2;}' +\n    '.unit{margin:-6px 0 10px;font-size:13.5px;font-weight:600;color:#6b7280;}' +\n    '.row{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-bottom:8px;font-size:14.5px;line-height:1.6;}' +\n    '.nm{font-weight:700;color:#1f2329;min-width:3.5em;}' +\n    '.it{display:inline-flex;align-items:center;gap:6px;color:#333;text-decoration:none;}' +\n    '.it svg{color:#1976d2;flex-shrink:0;}' +\n    'a.it:hover{color:#1976d2;text-decoration:underline;}' +\n    '.mail{margin-top:10px;padding-top:10px;border-top:1px dashed #e3e8ef;}' +\n    '.sub{margin-top:14px;padding:12px 14px;border-radius:10px;background:#f7fbff;border:1px solid #e3e8ef;}' +\n    '.sub-h{font-size:13.5px;font-weight:700;color:#1976d2;margin-bottom:6px;}' +\n    '.sub .row{margin-bottom:4px;}' +\n    '.foot{margin-top:22px;padding-top:16px;border-top:1px solid #eef1f4;text-align:center;font-size:13.5px;color:#8a8f98;line-height:1.8;}' +\n    '.foot a{color:#1976d2;text-decoration:none;font-weight:600;margin:0 10px;}' +\n    '.foot a:hover{text-decoration:underline;}' +\n    '@media (max-width:960px){.grid{grid-template-columns:1fr;gap:12px;}}' +\n    '@media (max-width:760px){' +\n      '.title{font-size:25px;}' +\n      '.eyebrow::before,.eyebrow::after{width:40px;}' +\n      '.lang{position:static;display:flex;width:max-content;margin:12px auto 0;}' +\n      '.card{padding:16px 16px 14px;}' +\n      '.foot a{display:inline-block;margin:2px 8px;}' +\n    '}';\n  \/\/ ------------------------------------------------------------\n  \/\/ \u7e6a\u88fd\n  \/\/ ------------------------------------------------------------\n  var lang = \"zh\";\n  function telHTML(r) {\n    var txt = r.telText[lang];\n    var inner = ICON.tel + \"<span>\" + txt + \"<\/span>\";\n    return r.tel\n      ? '<a class=\"it\" href=\"tel:' + r.tel + '\" aria-label=\"' + UI[lang].tel + \" \" + txt + '\">' + inner + \"<\/a>\"\n      : '<span class=\"it\">' + inner + \"<\/span>\";\n  }\n  function rowsHTML(rows) {\n    return rows.map(function (r) {\n      return '<div class=\"row\">' + (r.name ? '<span class=\"nm\">' + r.name + \"<\/span>\" : \"\") + telHTML(r) + \"<\/div>\";\n    }).join(\"\");\n  }\n  function mailHTML(m) {\n    return '<div class=\"row\"><a class=\"it\" href=\"mailto:' + m + '\">' + ICON.mail + \"<span>\" + m + \"<\/span><\/a><\/div>\";\n  }\n  function render() {\n    var ui = UI[lang];\n    var cards = CARDS.map(function (c) {\n      var t = c[lang];\n      var title = c.link\n        ? '<a href=\"' + c.link + '\" target=\"_blank\" rel=\"noopener\">' + t.title + ICON.ext + \"<\/a>\"\n        : t.title;\n      return (\n        '<div class=\"card\">' +\n          '<h3 class=\"ct\">' + title + \"<\/h3>\" +\n          (c.unit ? '<div class=\"unit\">' + c.unit[lang] + \"<\/div>\" : \"\") +\n          rowsHTML(c.rows) +\n          '<div class=\"mail\">' + mailHTML(c.mail) + \"<\/div>\" +\n          (c.subRows\n            ? '<div class=\"sub\"><div class=\"sub-h\">' + t.sub + \"<\/div>\" + rowsHTML(c.subRows) + mailHTML(c.subMail) + \"<\/div>\"\n            : \"\") +\n        \"<\/div>\"\n      );\n    }).join(\"\");\n    var links = FOOT.links.map(function (l) {\n      return '<a href=\"' + l.href + '\" target=\"_blank\" rel=\"noopener\">' + l[lang] + \"<\/a>\";\n    }).join(\"|\");\n    ROOT.innerHTML =\n      \"<style>\" + CSS + \"<\/style>\" +\n      '<div class=\"wrap\" lang=\"' + (lang === \"zh\" ? \"zh-TW\" : \"en\") + '\">' +\n        '<div class=\"head\">' +\n          '<div class=\"eyebrow\">TAICA\u00d7TKU<\/div>' +\n          '<h2 class=\"title\">' + ui.title + \"<\/h2>\" +\n          '<div class=\"lang\" role=\"group\" aria-label=\"Language\">' +\n            '<button type=\"button\" data-lang=\"zh\" aria-pressed=\"' + (lang === \"zh\") + '\">\u4e2d\u6587<\/button>' +\n            '<button type=\"button\" data-lang=\"en\" aria-pressed=\"' + (lang === \"en\") + '\">EN<\/button>' +\n          \"<\/div>\" +\n        \"<\/div>\" +\n        '<div class=\"grid\">' + cards + \"<\/div>\" +\n        '<div class=\"foot\">' + links + \"<\/div>\" +\n      \"<\/div>\";\n  }\n  ROOT.addEventListener(\"click\", function (e) {\n    var b = e.target.closest(\".lang button\");\n    if (!b) return;\n    lang = b.getAttribute(\"data-lang\");\n    render();\n  });\n  render();\n})();\n<\/script>\n\n\n\n<!-- ============================================================\n  TAICA \u9801\u9762\u52d5\u756b\u63a7\u5236\u5668\uff08\u8acb\u4fdd\u6301\u653e\u5728\u6574\u9801\u6700\u4e0b\u65b9\uff09\n  \u8aaa\u660e\uff1a\u5075\u6e2c\u5e36\u6709 data-anim \u5c6c\u6027\u7684\u5340\u584a\uff0c\u6372\u9032\u756b\u9762\u6642\u624d\u901a\u77e5\u8a72\u5340\u584a\u64ad\u653e\u9032\u5834\u52d5\u756b\uff0c\u6bcf\u500b\u5340\u584a\u53ea\u64ad\u4e00\u6b21\u3002\n        \u4f7f\u7528\u8005\u6709\u958b\u555f\u300c\u6e1b\u5c11\u52d5\u614b\u6548\u679c\u300d\u3001\u6216\u700f\u89bd\u5668\u4e0d\u652f\u63f4\u6642\uff0c\u76f4\u63a5\u986f\u793a\u5167\u5bb9\u3001\u4e0d\u64ad\u52d5\u756b\u3002\n  \u64f4\u5145\u65b9\u5f0f\uff1a\u5176\u4ed6\u5340\u584a\u8981\u52a0\u52d5\u756b\u6642\uff0c\u5728\u8a72\u5340\u584a\u7684 Host div \u52a0\u4e0a data-anim \u8207 data-anim-ms\uff08\u52d5\u756b\u7e3d\u9577\uff0c\u6beb\u79d2\uff09\uff0c\n        \u518d\u65bc\u8a72\u5340\u584a CSS \u5167\u7528 :host(.is-in:not(.anim-done)) \u64b0\u5beb\u52d5\u756b\u5373\u53ef\u3002\n  \u6ce8\u610f\uff1a\u7a0b\u5f0f\u5167\u4e0d\u8981\u4f7f\u7528\u534a\u5f62\u7684 and \u8a18\u865f\uff08WordPress \u53ef\u80fd\u6703\u6539\u58de\uff09\u3002\n============================================================ -->\n<script>\n(function () {\n  \"use strict\";\n  var hosts = Array.prototype.slice.call(document.querySelectorAll(\"[data-anim]\"));\n  if (!hosts.length) return;\n\n  function finish(h) {\n    h.classList.add(\"is-in\");\n    h.classList.add(\"anim-done\");\n  }\n\n  var reduce = false;\n  if (window.matchMedia) {\n    if (window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) reduce = true;\n  }\n  if (reduce || !(\"IntersectionObserver\" in window)) {\n    hosts.forEach(finish);\n    return;\n  }\n\n  var io = new IntersectionObserver(function (entries) {\n    entries.forEach(function (en) {\n      if (!en.isIntersecting) return;\n      var h = en.target;\n      io.unobserve(h);\n      h.classList.add(\"is-in\");\n      var ms = parseInt(h.getAttribute(\"data-anim-ms\"), 10) || 2000;\n      setTimeout(function () { h.classList.add(\"anim-done\"); }, ms);\n    });\n  }, { threshold: 0.15, rootMargin: \"0px 0px -8% 0px\" });\n\n  hosts.forEach(function (h) {\n    h.classList.add(\"anim-ready\");\n    io.observe(h);\n  });\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u2191<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"wp-custom-template-aiee","meta":{"footnotes":""},"acf":[],"_links":{"self":[{"href":"\/aiee\/index.php?rest_route=\/wp\/v2\/pages\/2337"}],"collection":[{"href":"\/aiee\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"\/aiee\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"\/aiee\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"\/aiee\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2337"}],"version-history":[{"count":315,"href":"\/aiee\/index.php?rest_route=\/wp\/v2\/pages\/2337\/revisions"}],"predecessor-version":[{"id":7854,"href":"\/aiee\/index.php?rest_route=\/wp\/v2\/pages\/2337\/revisions\/7854"}],"wp:attachment":[{"href":"\/aiee\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}