@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}
.flash-message{padding:12px 20px;text-align:center;background:#fff1d9;color:#765526;border-bottom:1px solid #ead8b6;font-size:14px}
.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 > img { width: 100%; height: 100%; object-fit: cover; }
.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-photo > img { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }
.avatar-upload-row { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 16px; align-items: center; }
.avatar-preview { width: 96px; height: 96px; display: grid; place-items: center; overflow: hidden; border-radius: 50%; color: #fff; background: linear-gradient(145deg,var(--main-accent-color),var(--main-dark-color)); font-size: 34px; }
.avatar-preview img { width: 100%; height: 100%; object-fit: cover; }
.avatar-upload-row input[type="file"] { min-height: auto; padding: 10px; }
.avatar-upload-row small { display: block; margin-top: 7px; color: var(--muted); line-height: 1.6; }
.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-profile .teacher-account-no{display:block;margin-top:5px;font-size:11px}.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}}
/* 命相師可聯繫時段 */
.availability-description { color: var(--muted); }
.availability-scroll { overflow-x: auto; margin-top: 20px; }
.availability-grid { width: 100%; min-width: 680px; border-collapse: collapse; text-align: center; }
.availability-grid th,
.availability-grid td { padding: 14px 10px; border: 1px solid rgba(116, 85, 111, .16); vertical-align: middle; }
.availability-grid thead th { color: #fff; background: var(--plum); }
.availability-grid tbody th { min-width: 150px; font-weight: 500; background: #fbf8f4; }
.availability-grid tbody th span,
.availability-grid tbody th small { display: block; }
.availability-grid tbody th small { margin-top: 4px; color: var(--muted); font-weight: 400; }
.availability-option { display: inline-flex; margin: 0; cursor: pointer; }
.availability-option input { position: absolute; opacity: 0; }
.availability-option span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  color: transparent;
  border: 1px solid rgba(116, 85, 111, .24);
  border-radius: 50%;
  background: #fff;
  transition: .15s ease;
}
.availability-option input:checked + span { color: #fff; border-color: var(--plum); background: var(--plum); }
.availability-period-name { margin-bottom: 7px; text-align: center; }
.availability-period-time { display: flex; align-items: center; gap: 5px; }
.availability-period-time .control { min-width: 68px; padding-right: 6px; padding-left: 6px; text-align: center; }

/* 表單驗證與驗證碼 */
.form-group input.error,
.form-group select.error,
.form-group textarea.error { border-color: #c0392b; background: #fff7f6; box-shadow: 0 0 0 3px rgba(192,57,43,.1); }
.form-group span.error { display: block; margin-top: 6px; color: #c0392b; font-size: 13px; font-weight: 700; }
.captcha-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 120px;
  grid-template-areas:
    "captcha-input captcha-image"
    "captcha-error captcha-image";
  column-gap: 10px;
  row-gap: 6px;
  align-items: start;
}
.captcha-row input { grid-area: captcha-input; }
.captcha-row img {
  grid-area: captcha-image;
  width: 120px;
  height: 50px;
  object-fit: cover;
  cursor: pointer;
  background: #222;
}
.captcha-row span.error {
  grid-area: captcha-error;
  margin-top: 0;
}
.member-form-growl { position: fixed; top: 82px; right: 20px; z-index: 12000; display: none; max-width: calc(100vw - 40px); padding: 13px 20px 13px 48px; border-radius: 8px; color: #fff; background: rgba(51,51,51,.94) no-repeat 15px center/24px; box-shadow: 0 8px 24px rgba(0,0,0,.2); font-size: 14px; font-weight: 600; }
.member-form-growl.is-success { background-image: url('/assets/icon_success.png'); }
.member-form-growl.is-error { background-image: url('/assets/icon_error.png'); }
@media(max-width:620px) {
  .captcha-row {
    grid-template-columns: minmax(0, 1fr) 120px;
  }
}
.auth-help-right { text-align: right; }
.form-static {
    display: block;
    padding: 14px 0;
    color: var(--muted);
}
.choice-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}
.choice-buttons label { margin: 0; cursor: pointer; }
.choice-buttons input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
}
.choice-buttons span {
    display: inline-flex;
    align-items: center;
    min-height: 42px;
    padding: 9px 17px;
    border: 1px solid #d9d2cc;
    border-radius: 8px;
    color: var(--muted);
    background: #fff;
    transition: .2s ease;
}
.choice-buttons input:checked + span {
    border-color: var(--main-color);
    color: #fff;
    background: var(--main-color);
    box-shadow: 0 6px 18px var(--main-shadow-color);
}
.completeness-title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
}
.completeness-title strong { color: var(--main-color); font-size: 28px; }
.progress-track {
    height: 10px;
    margin: 16px 0;
    overflow: hidden;
    border-radius: 10px;
    background: #ece7e2;
}
.progress-track span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: var(--main-color);
}
.login-history > div {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
    padding: 12px 0;
    border-bottom: 1px solid #eee8e3;
}
.login-history > div:last-child { border-bottom: 0; }
.login-history small { color: var(--muted); }
.crop-modal {
    position: fixed;
    inset: 0;
    z-index: 13000;
    padding: 30px;
    background: rgba(25, 21, 24, .72);
}
.crop-modal[hidden] { display: none; }
.crop-dialog {
    width: min(620px, 100%);
    margin: 3vh auto 0;
    padding: 24px;
    border-radius: 14px;
    background: #fff;
}
.crop-stage {
    height: min(58vh, 520px);
    margin: 18px 0;
    overflow: hidden;
    background: #191619;
}
.crop-stage img { display: block; max-width: 100%; }
.crop-actions { display: flex; justify-content: flex-end; gap: 10px; }
.favorite.is-favorite,
[data-favorite].is-favorite { color: #fff; background: var(--main-color); }
.link-button {
    padding: 0;
    border: 0;
    color: var(--main-color);
    background: transparent;
    cursor: pointer;
    font: inherit;
}
.member-favorite-actions { white-space: nowrap; }
.member-favorite-actions .link-button { margin-left: 12px; }
.member-favorite-actions .link-button.is-favorite { color: var(--main-color); background: transparent; }
.contact-stats-panel { margin-bottom: 22px; }
.contact-stats-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}
.contact-stats-grid > div {
    display: grid;
    grid-template-columns: 36px 1fr auto;
    align-items: center;
    gap: 10px;
    padding: 15px;
    border-radius: 10px;
    background: var(--main-soft-color);
}
.contact-stats-grid i { color: var(--main-color); font-size: 23px; text-align: center; }
.contact-stats-grid span { color: var(--muted); }
.contact-stats-grid strong { font-size: 22px; }

@media (max-width: 640px) {
    .crop-modal { padding: 12px; }
    .crop-dialog { margin-top: 1vh; padding: 16px; }
    .crop-actions .button { flex: 1; padding-inline: 12px; }
    .login-history > div { align-items: flex-start; flex-direction: column; gap: 4px; }
    .contact-stats-grid { grid-template-columns: 1fr; }
}
.main-nav { gap: 24px; }
.nav-account {
    display: flex;
    align-items: stretch;
    min-height: 54px;
    margin-left: 8px;
    overflow: hidden;
    border: 1px solid #ded6de;
    border-radius: 22px 8px 22px 8px;
    background: #f3eef2;
    box-shadow: 0 8px 24px var(--main-shadow-color);
}
.nav-account a { position: static; }
.nav-account a:after { display: none !important; }
.nav-account-user {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 7px 14px;
}
.nav-account-user > i { color: var(--main-color); font-size: 24px; }
.nav-account-user span { display: flex; flex-direction: column; line-height: 1.25; }
.nav-account-user small { color: var(--muted); font-size: 9px; font-weight: 500; }
.nav-account-user b { max-width: 110px; overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.nav-account-logout,
.nav-account-register,
.nav-account-login {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 16px;
    font-size: 13px !important;
    font-weight: 700;
}
.nav-account-logout,
.nav-account-register { color: #fff !important; background: var(--main-color); }
.nav-account-login { color: var(--main-color) !important; }
.nav-account-login + .nav-account-register { border-radius: 0; }
.nav-account-login i,
.nav-account-logout i { margin-right: 7px; }
.avatar-delete-button { margin-bottom: 9px; color: var(--main-color); }
.dash-title-sticky {
    position: sticky;
    top: 82px;
    z-index: 30;
    margin: -14px -14px 22px;
    padding: 14px;
    border-bottom: 1px solid rgba(226, 219, 207, .9);
    background: rgba(247, 245, 241, .96);
    backdrop-filter: blur(12px);
}
.choice-buttons-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}
.choice-buttons-grid label,
.choice-buttons-grid span { width: 100%; }
.choice-buttons-grid span { justify-content: center; text-align: center; }
.choice-buttons-grid span > i {
    margin-right: 7px;
    color: var(--main-color);
    font-size: 15px;
}
.choice-buttons-grid input:checked + span > i { color: #fff; }
textarea {
    resize: none;
    overflow-y: hidden;
}

/* 可聯繫時段：緊湊輸入區塊 */
.availability-grid th,
.availability-grid td { padding: 10px 8px; }
.availability-grid thead th { padding-top: 12px; padding-bottom: 12px; }
.availability-grid tbody th { width: 238px; min-width: 238px; }
.availability-grid .control {
    min-height: 38px;
    height: 38px;
    padding-top: 7px;
    padding-bottom: 7px;
    border-color: #ddd4db;
    border-radius: 6px;
    background: #fff;
    font-size: 13px;
}
.availability-period-name {
    width: 132px;
    margin: 0 auto 9px;
    font-weight: 600;
}
.availability-period-time { justify-content: center; gap: 7px; }
.availability-period-time .control {
    flex: 0 0 78px;
    width: 78px;
    min-width: 78px;
}
.availability-period-time > span { color: var(--muted); }

@media(max-width: 1100px) and (min-width: 992px) {
    .nav-shell { gap: 20px; }
    .main-nav { gap: 14px; }
    .nav-account-user { padding-inline: 10px; }
    .nav-account-user b { max-width: 76px; }
}
@media(max-width: 991px) {
    .main-nav { align-items: stretch; gap: 0; }
    .main-nav > a { padding: 12px 4px; }
    .nav-account { margin: 16px 0 0; }
    .nav-account-user { flex: 1; }
}
@media(max-width: 620px) {
    .dash-title-sticky { top: 82px; }
    .dash-title-sticky h1 { font-size: 25px; }
    .dash-title-sticky .button { min-height: 40px; padding: 0 13px; }
    .choice-buttons-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* 404 Error */
.error-page {
    display: grid;
    min-height: calc(100vh - 82px);
    padding: 70px 0;
    place-items: center;
    background:
        radial-gradient(circle at 20% 20%, rgba(116, 85, 111, .12), transparent 35%),
        var(--main-soft-color);
}

/* FAQ */
.faq-hero { padding-bottom: 72px; }
.faq-shell { width: min(860px, calc(100% - 40px)); }
.faq-list { display: grid; gap: 12px; }
.faq-item {
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 16px 5px 16px 5px;
    background: #fff;
    transition: border-color .2s ease, box-shadow .2s ease;
}
.faq-item.is-open {
    border-color: rgba(116, 85, 111, .42);
    box-shadow: 0 12px 30px var(--main-shadow-color);
}
.faq-question {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr) 24px;
    align-items: center;
    gap: 14px;
    width: 100%;
    padding: 20px 22px;
    border: 0;
    color: var(--ink);
    background: transparent;
    cursor: pointer;
    text-align: left;
}
.faq-question b { font-size: 16px; line-height: 1.6; }
.faq-number {
    display: grid;
    width: 40px;
    height: 40px;
    place-items: center;
    border-radius: 12px 4px 12px 4px;
    color: var(--main-color);
    background: var(--main-soft-color);
    font-size: 12px;
    font-weight: 700;
}
.faq-question > i { color: var(--main-color); transition: transform .2s ease; }
.faq-item.is-open .faq-question > i { transform: rotate(45deg); }
.faq-answer { display: none; padding: 0 28px 22px 80px; }
.faq-item.is-open .faq-answer { display: block; }
.faq-answer p { margin: 0; color: var(--muted); line-height: 1.9; }
.faq-empty { padding: 50px 25px; text-align: center; }
.faq-empty > i { color: var(--main-color); font-size: 48px; }
.faq-empty h2 { margin-top: 16px; }
.faq-empty p { color: var(--muted); }
.guide-checklist .category-card { cursor: default; }
.guide-faq-cta { margin-top: 42px; }
@media(max-width: 620px) {
    .faq-shell { width: min(100% - 28px, 860px); }
    .faq-question { grid-template-columns: 36px minmax(0, 1fr) 20px; gap: 10px; padding: 17px 14px; }
    .faq-number { width: 34px; height: 34px; }
    .faq-answer { padding: 0 18px 18px 60px; }
}
.error-shell { display: flex; justify-content: center; }
.error-card {
    position: relative;
    width: min(720px, 100%);
    padding: 54px 48px;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 24px 8px 24px 8px;
    background: rgba(255, 255, 255, .94);
    box-shadow: var(--shadow);
    text-align: center;
}
.error-card:before {
    position: absolute;
    width: 190px;
    height: 190px;
    top: -95px;
    right: -70px;
    border: 34px solid rgba(116, 85, 111, .06);
    border-radius: 50%;
    content: '';
}
.error-symbol {
    display: grid;
    width: 74px;
    height: 74px;
    margin: 0 auto 14px;
    place-items: center;
    border-radius: 22px 8px 22px 8px;
    color: #fff;
    background: var(--main-color);
    font-size: 29px;
    transform: rotate(-8deg);
}
.error-symbol i { transform: rotate(8deg); }
.error-code {
    color: rgba(116, 85, 111, .16);
    font: 700 clamp(76px, 13vw, 126px)/.95 "Noto Serif TC", serif;
    letter-spacing: .04em;
}
.error-card h1 { margin: 10px 0 15px; font-size: clamp(27px, 4vw, 38px); }
.error-card p { max-width: 520px; margin: 0 auto; color: var(--muted); line-height: 1.9; }
.error-actions { display: flex; justify-content: center; gap: 12px; margin-top: 30px; }
@media(max-width: 620px) {
    .error-page { padding: 35px 0; }
    .error-card { padding: 38px 20px; }
    .error-actions { align-items: stretch; flex-direction: column; }
}
