@charset "UTF-8";
:root{--ink:#27322f;--muted:#6f7773;--paper:var(--main-soft-color);--cream:#fffdf9;--plum:var(--main-color);--plum-dark:var(--main-dark-color);--gold:var(--main-accent-color);--sage:#739183;--line:#e5ddd3;--white:#fff;--shadow:0 20px 60px var(--main-shadow-color)}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;color:var(--ink);background:var(--cream);font-family:"Noto Sans TC","Microsoft JhengHei",sans-serif;font-size:16px;line-height:1.75}
a{color:inherit;text-decoration:none;transition:.2s ease}
img{max-width:100%;display:block}
h1,h2,h3,h4,p{margin-top:0}
h1,h2,h3,.serif{font-family:"Noto Serif TC",serif}
.shell{width:min(1180px,calc(100% - 40px));margin:auto}
.theme-preview-bar{position:relative;z-index:60;background:var(--main-dark-color);color:#fff;font-size:12px;transition:background-color .3s ease}
.theme-preview-inner{min-height:40px;display:flex;align-items:center;justify-content:space-between;gap:18px}
.theme-preview-inner>span{display:flex;align-items:center;gap:8px;color:rgba(255,255,255,.78)}
.theme-switch-button{display:inline-flex;align-items:center;gap:9px;padding:5px 11px 5px 6px;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:rgba(255,255,255,.1);color:#fff;font-size:12px;cursor:pointer}
.theme-switch-button:hover{background:rgba(255,255,255,.18)}
.theme-switch-dot{width:20px;height:20px;border:3px solid rgba(255,255,255,.78);border-radius:50%;background:var(--main-color);box-shadow:inset 0 0 0 3px var(--main-accent-color)}
.site-header{position:sticky;top:0;z-index:50;background:rgba(255,253,248,.94);border-bottom:1px solid rgba(226,219,207,.8);backdrop-filter:blur(16px)}
.nav-shell{height:82px;display:flex;align-items:center;gap:38px}
.brand{display:inline-flex;align-items:center;gap:12px;min-width:max-content}
.brand-mark{width:42px;height:42px;display:grid;place-items:center;color:#fff;background:var(--plum);border-radius:12px;font-size:18px}
.brand b{display:block;font:700 22px "Noto Serif TC";letter-spacing:.14em}
.brand small{display:block;color:var(--muted);font-size:8px;letter-spacing:.24em}
.main-nav{display:flex;align-items:center;gap:28px;margin-left:auto}
.main-nav a{position:relative;font-size:15px;color:#514c57}
.main-nav a:hover,.main-nav a.is-active{color:var(--plum)}
.main-nav a.is-active:after{content:"";position:absolute;left:50%;bottom:-12px;width:5px;height:5px;border-radius:50%;background:var(--gold)}
.nav-actions{display:flex;align-items:center;gap:18px}
.text-action{font-size:14px;font-weight:600}
.nav-toggle{display:none;border:0;background:none;font-size:24px}
.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:0 25px;border:1px solid var(--plum);border-radius:4px;background:var(--plum);color:white;font-size:14px;font-weight:700;letter-spacing:.06em;box-shadow:none}
.button:hover{transform:translateY(-2px);background:var(--plum-dark);color:#fff}
.button-small{min-height:42px;padding:0 20px}
.button-light{background:#fff;color:var(--plum);border-color:#fff}
.button-outline{background:transparent;color:var(--plum);border-color:#b9acbc}
.button-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.55)}
.eyebrow{display:flex;align-items:center;gap:10px;color:var(--gold);font-size:13px;font-weight:700;letter-spacing:.18em;text-transform:uppercase}
.eyebrow:before{content:"";width:28px;height:1px;background:currentColor}
.hero{position:relative;overflow:hidden;background:var(--paper);padding:84px 0 72px}
.hero:before{content:"";position:absolute;width:580px;height:580px;right:-180px;top:-230px;border:1px solid var(--main-accent-color);border-radius:50%;opacity:.34;box-shadow:0 0 0 70px rgba(255,255,255,.3),0 0 0 140px rgba(255,255,255,.2)}
.hero-grid{position:relative;display:grid;grid-template-columns:1.04fr .96fr;gap:72px;align-items:center}
.hero h1{font-size:clamp(42px,5.5vw,72px);line-height:1.22;letter-spacing:.04em;margin:18px 0 22px}
.hero h1 em{color:var(--plum);font-style:normal}
.hero-copy>p{max-width:580px;color:var(--muted);font-size:18px}
.search-panel{display:grid;grid-template-columns:1fr 1fr auto;gap:0;margin-top:34px;padding:8px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow)}
.search-field{padding:8px 18px;border-right:1px solid var(--line)}
.search-field label{display:block;color:var(--muted);font-size:11px}
.search-field select,.search-field input{width:100%;border:0;outline:0;background:transparent;color:var(--ink);font-size:15px}
.hero-visual{position:relative;min-height:480px}
.portrait-main{position:absolute;inset:0 40px 38px 70px;border-radius:90px 24px 90px 24px;background:linear-gradient(145deg,var(--main-accent-color),var(--main-dark-color));overflow:hidden;box-shadow:var(--shadow);display:grid;place-items:center}
.portrait-main:before{content:"";position:absolute;width:330px;height:330px;border:55px solid rgba(255,255,255,.13);border-radius:50%}
.portrait-main>i{position:relative;color:rgba(255,255,255,.88);font-size:120px}
.portrait-card{position:absolute;left:0;bottom:0;width:245px;padding:20px;background:rgba(255,255,255,.93);box-shadow:var(--shadow);backdrop-filter:blur(12px)}
.portrait-card b{display:block;font-family:"Noto Serif TC";font-size:19px}
.portrait-card small{color:var(--muted)}
.seal{position:absolute;right:0;top:42px;width:96px;height:96px;display:grid;place-items:center;text-align:center;border-radius:50%;background:var(--gold);color:#fff;font:700 15px/1.45 "Noto Serif TC";letter-spacing:.1em;box-shadow:0 12px 30px rgba(178,138,74,.3)}
.trust-row{display:flex;gap:30px;margin-top:24px;color:var(--muted);font-size:13px}
.trust-row span:before{content:"✓";margin-right:7px;color:var(--sage)}
.section{padding:92px 0}
.section-soft{background:var(--paper)}
.section-dark{background:var(--plum-dark);color:#fff}
.section-head{display:flex;align-items:end;justify-content:space-between;gap:30px;margin-bottom:38px}
.section-head h2{font-size:38px;line-height:1.35;margin:8px 0 0}
.section-head p{max-width:480px;color:var(--muted);margin-bottom:4px}
.category-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.category-card{min-height:190px;padding:27px;border:1px solid var(--line);background:#fff;position:relative;overflow:hidden}
.category-card:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:#cdbacb}
.category-symbol{display:grid;place-items:center;width:48px;height:48px;margin-bottom:32px;border-radius:50%;color:var(--plum);background:#eee6ef;font-size:21px}
.category-card h3{font-size:20px;margin-bottom:6px}
.category-card p{color:var(--muted);font-size:13px;margin:0}
.category-card small{position:absolute;right:20px;bottom:18px;color:#a49ca7}
.teacher-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.teacher-card{border:1px solid var(--line);background:#fff;transition:.25s}
.teacher-card:hover{transform:translateY(-5px);box-shadow:var(--shadow)}
.teacher-photo{height:290px;position:relative;display:grid;place-items:center;overflow:hidden;background:linear-gradient(145deg,#d9d0c5,#9b899d);color:rgba(255,255,255,.72);font:110px "Noto Serif TC"}
.teacher-photo.photo-2{background:linear-gradient(145deg,#d9d9c7,#849480)}
.teacher-photo.photo-3{background:linear-gradient(145deg,#ddd0ba,#9a735d)}
.teacher-tag{position:absolute;left:16px;top:16px;padding:5px 11px;background:rgba(255,255,255,.9);color:var(--plum);font-size:11px}
.favorite{position:absolute;right:15px;top:14px;border:0;background:rgba(255,255,255,.9);border-radius:20px;padding:5px 10px;color:var(--plum);font-size:12px}
.teacher-body{padding:22px}
.teacher-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:12px}
.teacher-body h3{font-size:22px;margin:8px 0 7px}
.teacher-body p{min-height:50px;color:var(--muted);font-size:13px}
.tags{display:flex;flex-wrap:wrap;gap:7px}
.tags span{padding:4px 9px;background:var(--paper);color:#665e68;font-size:11px}
.teacher-foot{display:flex;justify-content:space-between;align-items:center;padding-top:18px;margin-top:18px;border-top:1px solid var(--line);font-size:13px}
.availability{color:#617154}.availability:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;background:#7c996b}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:36px;counter-reset:step}
.step{position:relative;padding:28px 0 0 72px;counter-increment:step}
.step:before{content:"0" counter(step);position:absolute;left:0;top:14px;color:var(--gold);font:700 40px "Noto Serif TC"}
.step h3{font-size:20px}.step p{color:var(--muted);font-size:14px}
.cta{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:50px 56px;background:var(--plum);color:#fff}
.cta h2{font-size:32px;margin:0}.cta p{color:rgba(255,255,255,.68);margin:8px 0 0}
.page-hero{padding:66px 0 54px;background:var(--paper);text-align:center;border-bottom:1px solid var(--line)}
.page-hero h1{font-size:44px;margin:10px 0}.page-hero p{color:var(--muted);margin:auto;max-width:650px}
.filter-bar{display:grid;grid-template-columns:1.4fr repeat(3,1fr) auto;gap:10px;padding:16px;margin:-28px auto 45px;background:#fff;box-shadow:var(--shadow);position:relative}
.control{height:48px;padding:0 14px;border:1px solid var(--line);background:#fff;color:var(--ink)}
.listing-layout{display:grid;grid-template-columns:230px 1fr;gap:34px}
.filter-side{padding:25px;border:1px solid var(--line);align-self:start;background:#fff}
.filter-side h3{font-size:17px}.filter-group{padding:18px 0;border-top:1px solid var(--line)}
.filter-group label{display:block;color:var(--muted);font-size:13px;margin:8px 0}
.result-top{display:flex;justify-content:space-between;margin-bottom:18px;color:var(--muted);font-size:13px}
.profile-hero{padding:60px 0;background:var(--paper)}
.profile-grid{display:grid;grid-template-columns:390px 1fr;gap:58px;align-items:center}
.profile-photo{height:490px;display:grid;place-items:center;background:linear-gradient(145deg,var(--main-accent-color),var(--main-dark-color));color:rgba(255,255,255,.86);font:170px "Noto Serif TC";border-radius:90px 24px 90px 24px}
.profile-copy h1{font-size:44px;margin:8px 0}.profile-copy .lead{color:var(--muted);font-size:17px}
.profile-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);margin:28px 0}
.profile-facts div{padding:17px;background:var(--paper)}.profile-facts small{display:block;color:var(--muted)}.profile-facts b{font-family:"Noto Serif TC"}
.profile-content{display:grid;grid-template-columns:1fr 330px;gap:50px}
.content-block{padding-bottom:35px;margin-bottom:35px;border-bottom:1px solid var(--line)}
.content-block h2{font-size:28px}.content-block p{color:#625d65}
.schedule{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.day{text-align:center;padding:12px 4px;background:var(--paper);font-size:12px}.day b{display:block}.day.is-open{background:#e7ecdf;color:#526047}
.contact-lock{position:sticky;top:110px;padding:27px;background:var(--plum);color:#fff}.contact-lock h3{font-size:23px}.contact-lock p{color:rgba(255,255,255,.72);font-size:13px}.contact-lock .button{width:100%;margin-top:9px}
.auth-page{min-height:calc(100vh - 82px);display:grid;grid-template-columns:1fr 1fr}
.auth-art{display:flex;align-items:end;padding:60px;background:linear-gradient(145deg,var(--main-color),var(--main-dark-color));color:#fff;position:relative;overflow:hidden}.auth-art:before{content:"";position:absolute;width:520px;height:520px;right:-180px;top:-210px;border:80px solid rgba(255,255,255,.07);border-radius:50%}.auth-art>div{position:relative}.auth-art h1{font-size:46px}.auth-art p{color:rgba(255,255,255,.74)}
.profile-icon{font-size:130px;color:rgba(255,255,255,.86);border-radius:90px 24px 90px 24px}
.auth-form-wrap{display:grid;place-items:center;padding:55px}.auth-form{width:min(420px,100%)}.auth-form h1{font-size:34px}.form-group{margin:18px 0}.form-group label{display:block;margin-bottom:7px;font-size:13px;font-weight:600}.form-group input,.form-group select,.form-group textarea{width:100%;min-height:50px;padding:11px 14px;border:1px solid var(--line);background:#fff}.auth-form .button{width:100%}.auth-help{text-align:center;color:var(--muted);font-size:13px;margin-top:18px}.role-tabs{display:grid;grid-template-columns:1fr 1fr;margin:22px 0}.role-tabs a{padding:11px;text-align:center;border-bottom:2px solid var(--line);color:var(--muted)}.role-tabs a.is-active{border-color:var(--plum);color:var(--plum);font-weight:700}
.dashboard{display:grid;grid-template-columns:250px 1fr;min-height:calc(100vh - 82px);background:#f7f5f1}.dash-side{padding:32px 24px;background:var(--plum-dark);color:#fff}.dash-profile{padding-bottom:25px;margin-bottom:22px;border-bottom:1px solid rgba(255,255,255,.14)}.dash-avatar{width:52px;height:52px;display:grid;place-items:center;border-radius:50%;background:#8a708f;font-family:"Noto Serif TC"}.dash-profile b{display:block;margin-top:12px}.dash-profile small{color:rgba(255,255,255,.55)}.dash-nav a{display:block;padding:11px 13px;margin:4px 0;color:rgba(255,255,255,.65);font-size:14px}.dash-nav a:hover,.dash-nav a.is-active{background:rgba(255,255,255,.1);color:#fff}.dash-main{padding:42px}.dash-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.dash-title h1{font-size:32px;margin:0}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.stat{padding:22px;background:#fff;border:1px solid var(--line)}.stat small{color:var(--muted)}.stat strong{display:block;font:700 30px "Noto Serif TC";margin-top:7px}.panel{padding:27px;margin-top:20px;background:#fff;border:1px solid var(--line)}.panel h2{font-size:21px}.panel-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:20px}.table-clean{width:100%;border-collapse:collapse}.table-clean th,.table-clean td{text-align:left;padding:13px 9px;border-bottom:1px solid var(--line);font-size:13px}.table-clean th{color:var(--muted);font-weight:500}.status{display:inline-block;padding:3px 8px;background:#e6ebdf;color:#58664d;font-size:11px}.status.warn{background:#f4ead8;color:#8a692f}
.site-footer{padding:62px 0 25px;background:#211925;color:#fff}.footer-grid{display:grid;grid-template-columns:2fr repeat(3,1fr);gap:50px}.brand-light .brand-mark{background:#fff;color:var(--plum)}.brand-light small,.footer-grid p{color:rgba(255,255,255,.55)}.footer-grid p{margin-top:18px;max-width:300px}.footer-grid>div>b{display:block;margin-bottom:14px}.footer-grid>div>a:not(.brand){display:block;margin:8px 0;color:rgba(255,255,255,.58);font-size:13px}.footer-grid>div>a:hover{color:#fff}.footer-bottom{display:flex;justify-content:space-between;padding-top:28px;margin-top:38px;border-top:1px solid rgba(255,255,255,.12);color:rgba(255,255,255,.42);font-size:11px}
@media(max-width:991px){.main-nav{display:none;position:absolute;top:82px;left:0;right:0;padding:22px;background:#fff;box-shadow:var(--shadow)}.main-nav.is-open{display:grid}.nav-toggle{display:block;margin-left:auto}.nav-actions{display:none}.hero-grid,.profile-grid,.profile-content,.auth-page,.dashboard{grid-template-columns:1fr}.hero-visual{min-height:390px}.category-grid{grid-template-columns:repeat(2,1fr)}.teacher-grid{grid-template-columns:repeat(2,1fr)}.listing-layout{grid-template-columns:1fr}.filter-side,.dash-side{display:none}.stats{grid-template-columns:repeat(2,1fr)}.dash-main{padding:28px}.profile-photo{max-width:430px;width:100%;margin:auto}.auth-art{min-height:330px}.filter-bar{grid-template-columns:1fr 1fr}.footer-grid{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.shell{width:min(100% - 28px,1180px)}.hero{padding:55px 0}.hero-grid{gap:35px}.hero h1{font-size:40px}.search-panel{grid-template-columns:1fr}.search-field{border-right:0;border-bottom:1px solid var(--line)}.hero-visual{min-height:330px}.portrait-main{inset:0 20px 35px 30px}.seal{width:75px;height:75px;font-size:12px}.trust-row{display:grid;gap:5px}.section{padding:65px 0}.section-head{display:block}.section-head h2{font-size:30px}.category-grid,.teacher-grid,.steps,.stats,.panel-grid{grid-template-columns:1fr}.teacher-photo{height:340px}.cta{display:block;padding:35px 28px}.cta .button{margin-top:22px}.page-hero h1{font-size:36px}.filter-bar{grid-template-columns:1fr}.profile-facts{grid-template-columns:1fr}.schedule{grid-template-columns:repeat(4,1fr)}.auth-form-wrap{padding:40px 24px}.dash-main{padding:24px 14px}.dash-title{align-items:start}.footer-grid{grid-template-columns:1fr 1fr;gap:28px}.footer-grid>div:first-child{grid-column:1/-1}.footer-bottom{display:grid;gap:5px}}
@media(max-width:620px){.theme-preview-inner{min-height:48px}.theme-preview-inner>span{font-size:10px}.theme-switch-label{font-size:11px}}
