body,html{height:100%;font-size:16px;background-color:#fafbfc;color:#1a1d23}body{margin:0;line-height:1.5;overflow:auto;overflow-x:hidden;font-family:Outfit,Noto Sans TC,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body input:focus,body textarea:focus,body select:focus{outline:none}body h1,body .h1{font-family:"DM Serif Display","Noto Serif TC",Georgia,serif;font-size:clamp(3rem,2rem + 5vw,4.5rem);font-weight:700;line-height:1.25;letter-spacing:-.025em}body h2,body .h2{font-family:"DM Serif Display","Noto Serif TC",Georgia,serif;font-size:clamp(2.25rem,1.75rem + 2.5vw,3rem);font-weight:700;line-height:1.25;letter-spacing:-.025em}body h3,body .h3{font-family:"DM Serif Display","Noto Serif TC",Georgia,serif;font-size:clamp(1.875rem,1.5rem + 1.875vw,2.5rem);font-weight:600;line-height:1.375}body h4,body .h4{font-family:Outfit,Noto Sans TC,system-ui,-apple-system,sans-serif;font-size:clamp(1.5rem,1.25rem + 1.25vw,2rem);font-weight:600;line-height:1.375}body h5,body .h5{font-family:Outfit,Noto Sans TC,system-ui,-apple-system,sans-serif;font-size:clamp(1.25rem,1.1rem + .75vw,1.5rem);font-weight:500;line-height:1.5}body p,body span,body div{font-family:Outfit,Noto Sans TC,system-ui,-apple-system,sans-serif}body blockquote{font-family:"DM Serif Display","Noto Serif TC",Georgia,serif;font-style:italic}body img{max-width:100%;height:auto}body .course-code{font-family:JetBrains Mono,SF Mono,Fira Code,monospace;font-weight:700;letter-spacing:.025em}body a,body button{transition:all .25s cubic-bezier(.4,0,.2,1)}body a{color:#8b2252;text-decoration:none}body a:hover{color:#a8466f}.in-development{display:none!important}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.75rem 1.5rem;font-family:Outfit,Noto Sans TC,system-ui,-apple-system,sans-serif;font-weight:600;font-size:clamp(.875rem,.8rem + .35vw,1rem);border-radius:10px;cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);border:none}.btn-primary{background:#8b2252;color:#fff}.btn-primary:hover{background:#a8466f;transform:translateY(-2px);box-shadow:0 4px 16px #0000001a}.btn-primary:active{transform:translateY(0)}.btn-secondary{background:transparent;color:#8b2252;border:2px solid #8b2252}.btn-secondary:hover{background:#8b22521a;transform:translateY(-2px)}.btn-ghost{background:transparent;color:#1a1d23}.btn-ghost:hover{background:#0000000d}.input{width:100%;padding:.875rem 1rem;font-family:Outfit,Noto Sans TC,system-ui,-apple-system,sans-serif;font-size:clamp(1rem,.9rem + .5vw,1.125rem);background:#fff;border:2px solid #e5e7eb;border-radius:10px;transition:all .25s cubic-bezier(.4,0,.2,1)}.input::-moz-placeholder{color:#9ca3af}.input::placeholder{color:#9ca3af}.input:focus{border-color:#8b2252;box-shadow:0 0 0 4px #8b22521a}.input:hover:not(:focus){border-color:#9ca3af}.card{background:#fff;border-radius:16px;box-shadow:0 2px 8px #00000014;border:1px solid rgba(0,0,0,.06);transition:all .3s cubic-bezier(.4,0,.2,1)}.card:hover{box-shadow:0 4px 16px #0000001a;transform:translateY(-4px)}.card-elevated{box-shadow:0 4px 16px #0000001a}.card-elevated:hover{box-shadow:0 8px 32px #0000001f}.not-found-page{min-height:70vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#fafbfc,#f5f6f8);padding:3rem 1.5rem}.not-found-page .content{text-align:center;max-width:600px}.not-found-page .error-code{font-family:"DM Serif Display","Noto Serif TC",Georgia,serif;font-size:clamp(100px,20vw,200px);font-weight:700;color:#8b2252;line-height:1;opacity:.15;margin-bottom:-2rem;animation:fadeIn .8s ease-out forwards}@media(min-width:768px){.not-found-page .error-code{margin-bottom:-3rem}}.not-found-page .title{font-family:"DM Serif Display","Noto Serif TC",Georgia,serif;font-size:clamp(1.875rem,1.5rem + 1.875vw,2.5rem);font-weight:700;color:#8b2252;margin-bottom:1rem;animation:slideUp .6s ease-out .1s forwards;opacity:0}@media(min-width:768px){.not-found-page .title{font-size:clamp(2.25rem,1.75rem + 2.5vw,3rem)}}.not-found-page .description{font-family:Outfit,Noto Sans TC,system-ui,-apple-system,sans-serif;font-size:clamp(1.125rem,1rem + .625vw,1.25rem);color:#6b7280;line-height:1.625;margin-bottom:2rem;animation:slideUp .6s ease-out .2s forwards;opacity:0}.not-found-page .actions{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center;animation:slideUp .6s ease-out .3s forwards;opacity:0}.not-found-page .actions .btn{display:inline-flex;align-items:center;justify-content:center;padding:.875rem 2rem;border-radius:12px;font-family:Outfit,Noto Sans TC,system-ui,-apple-system,sans-serif;font-weight:600;font-size:clamp(1rem,.9rem + .5vw,1.125rem);text-decoration:none;transition:all .25s ease;min-width:160px;cursor:pointer}.not-found-page .actions .btn.btn-primary{background:linear-gradient(135deg,#8b2252,#6b1a3f);color:#fff;border:none;box-shadow:0 4px 16px #0000001a}.not-found-page .actions .btn.btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 32px #0000001f}.not-found-page .actions .btn.btn-primary:active{transform:translateY(0)}.not-found-page .actions .btn.btn-secondary{background:#fff;color:#8b2252;border:2px solid #8b2252}.not-found-page .actions .btn.btn-secondary:hover{background:#8b22521a;transform:translateY(-2px);box-shadow:0 4px 16px #0000001a}.not-found-page .actions .btn.btn-secondary:active{transform:translateY(0)}.not-found-page .illustration{margin-top:3rem;animation:fadeIn .8s ease-out .4s forwards;opacity:0}.not-found-page .illustration svg{max-width:100%;height:auto;animation:float 4s ease-in-out infinite}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-15px)}}
