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}.comment-page{background:linear-gradient(180deg,#fafbfc,#f5f6f8);min-height:60vh;padding-top:3rem;padding-bottom:4rem}.comment-page h1{font-family:"DM Serif Display","Noto Serif TC",Georgia,serif;font-size:clamp(2.25rem,1.75rem + 2.5vw,3rem);font-weight:700;color:#8b2252;letter-spacing:-.025em;margin-bottom:2rem;animation:fadeIn .6s ease-out forwards}@media screen and (max-width:768px){.comment-page h1{font-size:clamp(1.875rem,1.5rem + 1.875vw,2.5rem)}}.comment-page h2,.comment-page h3{font-family:"DM Serif Display","Noto Serif TC",Georgia,serif;color:#8b2252}.comment-page textarea.comment-input{font-family:Outfit,Noto Sans TC,system-ui,-apple-system,sans-serif;font-size:clamp(1rem,.9rem + .5vw,1.125rem);padding:1rem 1.25rem;min-height:150px;resize:vertical}.comment-page textarea.comment-input::-moz-placeholder{color:#9ca3af}.comment-page textarea.comment-input::placeholder{color:#9ca3af}.comment-page .comment-input{background:#fff;border:2px solid #e5e7eb;border-radius:12px;display:flex;justify-content:space-between;cursor:pointer;position:relative;font-family:Outfit,Noto Sans TC,system-ui,-apple-system,sans-serif;transition:all .25s ease}.comment-page .comment-input:hover{border-color:#9ca3af}.comment-page .comment-input:focus-within{border-color:#8b2252;box-shadow:0 0 0 4px #8b22521a}.comment-page .comment-input.comment-selector{padding:1rem 1.25rem}.comment-page .comment-input .placeholder,.comment-page .comment-input .arrow-down{color:#9ca3af;font-size:clamp(1rem,.9rem + .5vw,1.125rem)}.comment-page .comment-input .placeholder.chosen{color:#1a1d23}.comment-page .comment-input input{width:100%;border:none;background:transparent;font-family:Outfit,Noto Sans TC,system-ui,-apple-system,sans-serif;font-size:clamp(1rem,.9rem + .5vw,1.125rem);padding:1rem 1.25rem}.comment-page .comment-input input::-moz-placeholder{color:#9ca3af}.comment-page .comment-input input::placeholder{color:#9ca3af}.comment-page .comment-input .dropdown{position:absolute;width:100%;background:#fff;border:1px solid #e5e7eb;border-radius:12px;top:calc(100% + 8px);left:0;padding:.5rem 0;box-shadow:0 8px 32px #0000001f;z-index:10;max-height:300px;overflow-y:auto}.comment-page .comment-input .dropdown li{padding:.75rem 1.25rem;font-size:clamp(1rem,.9rem + .5vw,1.125rem);cursor:pointer;transition:background .2s ease}.comment-page .comment-input .dropdown li:hover{background:#8b22521a;color:#8b2252}.comment-page .comment-input.required{border-color:#dc2626}.comment-page .comment-input.required:focus-within{box-shadow:0 0 0 4px #dc26261a}.comment-page .comment-submit-button{padding:1rem 2rem;background:linear-gradient(135deg,#8b2252,#6b1a3f);color:#fff;font-family:Outfit,Noto Sans TC,system-ui,-apple-system,sans-serif;font-size:clamp(1.125rem,1rem + .625vw,1.25rem);font-weight:600;border-radius:12px;border:none;cursor:pointer;width:100%;max-width:300px;transition:all .25s ease;box-shadow:0 4px 16px #0000001a}.comment-page .comment-submit-button:hover{transform:translateY(-2px);box-shadow:0 8px 32px #0000001f}.comment-page .comment-submit-button:active{transform:translateY(0)}.comment-page .comment-submit-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.comment-page .comment-search{font-family:Outfit,Noto Sans TC,system-ui,-apple-system,sans-serif;font-size:clamp(1rem,.9rem + .5vw,1.125rem);padding:.875rem 1.25rem;background:#fff;border:2px solid #e5e7eb;border-radius:12px;width:100%;max-width:600px;margin-bottom:1rem;transition:all .25s ease}.comment-page .comment-search::-moz-placeholder{color:#9ca3af}.comment-page .comment-search::placeholder{color:#9ca3af}.comment-page .comment-search:hover{border-color:#9ca3af}.comment-page .comment-search:focus{border-color:#8b2252;box-shadow:0 0 0 4px #8b22521a}.comment-page .course-list-container{width:100%;max-width:600px}.comment-page .course-list-container .course-list{width:100%;padding:.5rem 0;background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;border:1px solid rgba(0,0,0,.06)}.comment-page .course-list-container .course-list li{display:flex}.comment-page .course-list-container .course-list li a{width:100%;padding:.875rem 1.25rem;font-family:Outfit,Noto Sans TC,system-ui,-apple-system,sans-serif;font-size:clamp(1rem,.9rem + .5vw,1.125rem);color:#1a1d23;transition:all .2s ease}.comment-page .course-list-container .course-list li a:hover{background:#8b22521a;color:#8b2252}.comment-page .course-list-container .course-list li a .course-code{font-family:JetBrains Mono,SF Mono,Fira Code,monospace;font-weight:600}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
