:root{
  --cream:#fbf3ea;
  --cream-2:#f7ece0;
  --gold-light:#ecdcb8;
  --gold:#c9a35c;
  --gold-dark:#a8823f;
  --morandi-green:#93a58a;
  --morandi-green-dark:#748268;
  --morandi-green-light:#c3cebb;
  --ink:#4a3f38;
  --ink-soft:#7a6a5f;
  --white-soft:#fffaf4;
}

*{margin:0;padding:0;box-sizing:border-box;}

html{scroll-behavior:smooth;}

body{
  font-family:"Noto Sans TC","Microsoft JhengHei",sans-serif;
  color:var(--ink);
  background:var(--cream);
  line-height:1.8;
  overflow-x:hidden;
}

h1,h2,h3{
  font-family:"Noto Serif TC",serif;
  font-weight:600;
}

a{text-decoration:none;color:inherit;}

::selection{background:var(--morandi-green-light);color:var(--ink);}

/* ---------- Nav ---------- */
nav{
  position:fixed;
  top:0;left:0;right:0;
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:22px 6%;
  z-index:100;
  background:rgba(251,243,234,0.75);
  backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(147,165,138,0.15);
}

.logo{
  font-family:"Noto Serif TC",serif;
  font-size:1.3rem;
  font-weight:700;
  color:var(--morandi-green-dark);
  letter-spacing:2px;
}

.nav-links{
  display:flex;
  gap:36px;
  align-items:center;
  font-size:0.95rem;
  color:var(--ink-soft);
}

.nav-links a{
  position:relative;
  transition:color .3s ease;
}

.nav-links a::after{
  content:'';
  position:absolute;
  left:0;bottom:-6px;
  width:0;height:1px;
  background:var(--gold);
  transition:width .3s ease;
}

.nav-links a:hover{color:var(--gold-dark);}
.nav-links a:hover::after{width:100%;}

.nav-links .btn{padding:9px 22px;font-size:0.88rem;}

/* ---------- Hero ---------- */
.hero{
  position:relative;
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:120px 6% 60px;
  overflow:hidden;
}

.blob{
  position:absolute;
  border-radius:50%;
  filter:blur(2px);
  opacity:0.55;
}
.blob-1{
  width:420px;height:420px;
  background:radial-gradient(circle at 30% 30%, var(--morandi-green-light), var(--morandi-green));
  top:-120px; right:-100px;
}
.blob-2{
  width:280px;height:280px;
  background:radial-gradient(circle at 70% 70%, var(--gold-light), var(--gold));
  bottom:-80px; left:-90px;
  opacity:0.5;
}
.blob-3{
  width:160px;height:160px;
  background:radial-gradient(circle, var(--morandi-green-light), transparent 70%);
  top:20%; left:8%;
  opacity:0.6;
}

.hero-inner{
  position:relative;
  z-index:2;
  max-width:760px;
  width:100%;
  text-align:center;
}

.founder-tag{
  display:inline-flex;
  align-items:center;
  gap:10px;
  font-size:0.95rem;
  letter-spacing:1px;
  color:var(--morandi-green-dark);
  background:rgba(147,165,138,0.12);
  padding:8px 20px;
  border-radius:30px;
  margin-bottom:22px;
  font-weight:600;
}

.hero-lead{
  color:var(--ink-soft);
  font-size:1.08rem;
  max-width:560px;
  margin:0 auto 40px;
}

.hero-brand{
  margin-bottom:18px;
}

.hero-logo{
  display:block;
  width:180px;
  height:180px;
  margin:0 auto;
  border-radius:28px;
  overflow:hidden;
  box-shadow:0 20px 45px rgba(74,63,56,0.1);
}

.hero-logo img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

.hero-tagline{
  font-size:1.1rem;
  color:var(--morandi-green-dark);
  font-weight:500;
  letter-spacing:1px;
  margin-bottom:12px;
}

.hero-location{
  font-size:0.92rem;
  color:var(--ink-soft);
  margin-bottom:38px;
}

.hero-buttons{
  display:flex;
  gap:18px;
  justify-content:center;
}

.btn{
  display:inline-block;
  padding:14px 30px;
  border-radius:40px;
  font-size:0.95rem;
  letter-spacing:1px;
  transition:all .35s ease;
  border:1px solid transparent;
  cursor:pointer;
  font-family:inherit;
}

.btn-primary{
  background:var(--morandi-green-dark);
  color:var(--white-soft);
  box-shadow:0 10px 25px rgba(116,130,104,0.35);
}
.btn-primary:hover{
  background:var(--morandi-green);
  transform:translateY(-3px);
  box-shadow:0 14px 30px rgba(116,130,104,0.4);
}

.btn-outline{
  border-color:var(--gold);
  color:var(--gold-dark);
  background:transparent;
}
.btn-outline:hover{
  background:var(--gold);
  color:var(--white-soft);
  transform:translateY(-3px);
}

.btn:disabled{opacity:0.6;cursor:not-allowed;transform:none;}

/* ---------- Section base ---------- */
section{
  padding:135px 6%;
  position:relative;
}

.section-head{
  text-align:center;
  max-width:600px;
  margin:0 auto 72px;
}

.section-head .tag{
  color:var(--gold-dark);
  letter-spacing:3px;
  font-size:0.85rem;
  display:block;
  margin-bottom:14px;
}

.section-head h2{
  font-size:2.3rem;
  color:var(--ink);
}

.section-head p{
  color:var(--ink-soft);
  margin-top:16px;
}

/* ---------- Story ---------- */
.about{
  background:var(--cream-2);
}

.story-grid{
  max-width:1000px;
  margin:0 auto;
  display:grid;
  grid-template-columns:0.85fr 1.15fr;
  gap:56px;
  align-items:start;
}

.story-photo{
  border-radius:24px;
  overflow:hidden;
  box-shadow:0 25px 57px rgba(74,63,56,0.105);
  position:sticky;
  top:120px;
}

.story-photo img{
  width:100%;
  aspect-ratio:4/5;
  object-fit:cover;
  display:block;
  filter:brightness(1.35) saturate(1.08);
}

.love-list{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  margin:20px 0 24px;
}

.love-chip{
  background:var(--morandi-green-light);
  color:var(--morandi-green-dark);
  padding:8px 18px;
  border-radius:30px;
  font-size:0.85rem;
  font-weight:500;
}

.about-text p{
  color:var(--ink-soft);
  margin-bottom:18px;
  font-size:1.02rem;
}

.about-text strong{
  color:var(--gold-dark);
  font-weight:700;
}

/* ---------- Services ---------- */
.services-grid{
  max-width:1200px;
  margin:0 auto;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:30px;
}

.service-card{
  background:var(--white-soft);
  padding:40px 28px;
  border-radius:22px;
  text-align:center;
  box-shadow:0 15px 40px rgba(74,63,56,0.049);
  border-top:4px solid var(--morandi-green);
  transition:transform .35s ease, box-shadow .35s ease;
}

.service-card:nth-child(2),
.service-card:nth-child(4){
  border-top-color:var(--gold);
}
.service-card:nth-child(3){
  border-top-color:var(--morandi-green-dark);
}

.service-card:hover{
  transform:translateY(-10px);
  box-shadow:0 25px 52px rgba(74,63,56,0.091);
}

.service-icon{
  font-size:2.6rem;
  margin-bottom:18px;
  display:inline-block;
}

.service-card h3{
  font-size:1.15rem;
  margin-bottom:12px;
  color:var(--ink);
}

.service-card p{
  color:var(--ink-soft);
  font-size:0.92rem;
}

/* ---------- Philosophy ---------- */
.philosophy{
  background:linear-gradient(135deg, var(--morandi-green-dark), var(--morandi-green));
  color:var(--white-soft);
}

.philosophy .section-head .tag,
.philosophy .section-head p{
  color:rgba(255,250,244,0.85);
}

.philosophy .section-head h2{
  color:var(--white-soft);
  font-size:1.5rem;
  letter-spacing:1px;
}

.philosophy-body{
  max-width:640px;
  margin:0 auto;
  text-align:center;
  font-family:"Noto Serif TC",serif;
  font-size:1.15rem;
  line-height:2;
}

.philosophy-body p{ margin-bottom:14px; }

.philosophy-body .closing{
  margin-top:28px;
  padding-top:28px;
  border-top:1px solid rgba(255,250,244,0.25);
  font-size:1.25rem;
}

/* ---------- Why us ---------- */
.why-grid{
  max-width:1100px;
  margin:0 auto;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:24px;
}

.why-card{
  background:var(--white-soft);
  padding:36px 26px;
  border-radius:20px;
  text-align:center;
  box-shadow:0 15px 40px rgba(74,63,56,0.042);
  border:1px solid rgba(147,165,138,0.15);
}

.why-card .why-icon{
  font-size:2.2rem;
  margin-bottom:14px;
  display:inline-block;
}

.why-card h3{
  font-size:1.02rem;
  margin-bottom:10px;
  color:var(--morandi-green-dark);
}

.why-card p{
  color:var(--ink-soft);
  font-size:0.88rem;
}

/* ---------- Testimonials ---------- */
.testimonial-grid{
  max-width:1100px;
  margin:0 auto;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:26px;
}

.testimonial-card{
  background:var(--white-soft);
  padding:38px 30px;
  border-radius:22px;
  box-shadow:0 15px 40px rgba(74,63,56,0.049);
  border:1px solid rgba(147,165,138,0.15);
}

.testimonial-stars{
  color:var(--gold);
  letter-spacing:2px;
  margin-bottom:16px;
}

.testimonial-card p{
  font-family:"Noto Serif TC",serif;
  color:var(--ink);
  font-size:1rem;
  line-height:1.85;
}

.testimonial-note{
  max-width:700px;
  margin:36px auto 0;
  text-align:center;
  color:var(--ink-soft);
  font-size:0.85rem;
}

/* ---------- Process flow ---------- */
.process-flow{
  max-width:1100px;
  margin:0 auto;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-wrap:wrap;
  gap:8px;
}

.process-step{
  background:var(--white-soft);
  border-radius:20px;
  padding:22px 20px;
  min-width:140px;
  text-align:center;
  box-shadow:0 15px 40px rgba(74,63,56,0.042);
  border:1px solid rgba(147,165,138,0.15);
}

.process-step .step-num{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:30px;
  height:30px;
  border-radius:50%;
  background:var(--morandi-green-dark);
  color:var(--white-soft);
  font-size:0.85rem;
  font-weight:700;
  margin-bottom:10px;
}

.process-step .step-label{
  font-size:0.92rem;
  color:var(--ink);
  font-weight:500;
}

.process-arrow{
  color:var(--gold);
  font-size:1.3rem;
  flex-shrink:0;
}

/* ---------- Contact ---------- */
.contact{
  text-align:center;
  background:var(--cream);
}

.contact-card{
  max-width:560px;
  margin:0 auto 50px;
  background:var(--white-soft);
  border-radius:26px;
  padding:50px 40px;
  box-shadow:0 25px 57px rgba(74,63,56,0.07);
}

.contact-card h3{
  font-size:1.5rem;
  color:var(--ink);
  margin-bottom:14px;
}

.contact-card p{
  color:var(--ink-soft);
  margin-bottom:28px;
}

.contact-info{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:12px;
  margin-bottom:24px;
}

.contact-info div{
  display:flex;
  align-items:center;
  gap:8px;
  color:var(--ink-soft);
  font-size:0.95rem;
}

.contact-info a{
  color:var(--morandi-green-dark);
  font-weight:600;
}

.contact-note{
  color:var(--ink-soft);
  font-size:0.82rem;
  font-style:italic;
  max-width:440px;
  margin:0 auto 28px;
  line-height:1.7;
}

.map-wrap{
  max-width:900px;
  margin:0 auto;
  border-radius:26px;
  overflow:hidden;
  box-shadow:0 25px 57px rgba(74,63,56,0.07);
  border:1px solid rgba(147,165,138,0.15);
}

.map-wrap iframe{
  width:100%;
  height:380px;
  border:0;
  display:block;
}

/* ---------- Footer ---------- */
footer{
  text-align:center;
  padding:30px 6%;
  color:var(--ink-soft);
  font-size:0.85rem;
  background:var(--cream-2);
}

footer .footer-brand{
  font-family:"Noto Serif TC",serif;
  font-size:1.05rem;
  font-weight:600;
  color:var(--morandi-green-dark);
  margin-bottom:8px;
}

/* ---------- Auth pages ---------- */
.auth-page{
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:140px 6% 80px;
}

.auth-card{
  width:100%;
  max-width:420px;
  background:var(--white-soft);
  border-radius:26px;
  padding:44px 38px;
  box-shadow:0 25px 57px rgba(74,63,56,0.07);
  border:1px solid rgba(147,165,138,0.15);
}

.auth-card h1{
  font-size:1.6rem;
  margin-bottom:10px;
  text-align:center;
}

.auth-card .auth-sub{
  color:var(--ink-soft);
  font-size:0.92rem;
  text-align:center;
  margin-bottom:30px;
}

.form-group{
  margin-bottom:18px;
}

.form-group label{
  display:block;
  font-size:0.88rem;
  color:var(--ink-soft);
  margin-bottom:8px;
}

.form-group input,
.form-group textarea,
.form-group select{
  width:100%;
  border:1px solid rgba(147,165,138,0.3);
  background:var(--cream);
  border-radius:14px;
  padding:13px 16px;
  font-family:inherit;
  font-size:0.95rem;
  color:var(--ink);
}

.form-group input:focus,
.form-group textarea:focus,
.form-group select:focus{
  outline:none;
  border-color:var(--morandi-green);
  background:var(--white-soft);
}

.auth-card .btn{
  width:100%;
  text-align:center;
  margin-top:8px;
}

.form-msg{
  font-size:0.88rem;
  margin-top:14px;
  min-height:1.2em;
  text-align:center;
}
.form-msg.error{ color:var(--gold-dark); }
.form-msg.success{ color:var(--morandi-green-dark); }

.auth-links{
  text-align:center;
  margin-top:22px;
  font-size:0.88rem;
  color:var(--ink-soft);
}
.auth-links a{
  color:var(--morandi-green-dark);
  font-weight:600;
}
.auth-links a:hover{ text-decoration:underline; }

/* ---------- Member / Admin dashboards ---------- */
.dash-page{
  min-height:100vh;
  padding:140px 6% 80px;
  max-width:900px;
  margin:0 auto;
}

.dash-header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:16px;
  margin-bottom:40px;
}

.dash-header h1{ font-size:1.8rem; }
.dash-header p{ color:var(--ink-soft); margin-top:6px; }

.dash-card{
  background:var(--white-soft);
  border-radius:24px;
  padding:32px;
  box-shadow:0 20px 52px rgba(74,63,56,0.056);
  border:1px solid rgba(147,165,138,0.15);
  margin-bottom:28px;
}

.dash-card h2{
  font-size:1.2rem;
  margin-bottom:20px;
  color:var(--morandi-green-dark);
}

.booking-item{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  padding:16px 0;
  border-bottom:1px solid rgba(147,165,138,0.15);
}
.booking-item:last-child{ border-bottom:none; }

.booking-item .b-main{ flex:1 1 auto; }
.booking-item .b-service{ font-weight:700; color:var(--ink); }
.booking-item .b-meta{ font-size:0.85rem; color:var(--ink-soft); margin-top:4px; }

.status-pill{
  padding:5px 14px;
  border-radius:20px;
  font-size:0.78rem;
  font-weight:600;
  white-space:nowrap;
}
.status-pending{ background:rgba(213,154,126,0.18); color:var(--gold-dark); }
.status-confirmed{ background:rgba(147,165,138,0.2); color:var(--morandi-green-dark); }
.status-cancelled{ background:rgba(122,106,95,0.15); color:var(--ink-soft); }

.empty-note{ color:var(--ink-soft); font-size:0.9rem; text-align:center; padding:20px 0; }

/* ---------- AI chat widget ---------- */
.chat-toggle{
  position:fixed;
  bottom:28px;
  right:28px;
  width:60px;
  height:60px;
  border-radius:50%;
  background:var(--morandi-green-dark);
  color:var(--white-soft);
  border:none;
  font-size:1.6rem;
  cursor:pointer;
  box-shadow:0 14px 30px rgba(116,130,104,0.4);
  z-index:200;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:transform .25s ease;
}
.chat-toggle:hover{ transform:scale(1.08); }

.chat-panel{
  position:fixed;
  bottom:100px;
  right:28px;
  width:340px;
  max-width:88vw;
  height:460px;
  max-height:70vh;
  background:var(--white-soft);
  border-radius:22px;
  box-shadow:0 25px 57px rgba(74,63,56,0.14);
  border:1px solid rgba(147,165,138,0.15);
  display:none;
  flex-direction:column;
  overflow:hidden;
  z-index:200;
}
.chat-panel.open{ display:flex; }

.chat-head{
  background:var(--morandi-green-dark);
  color:var(--white-soft);
  padding:16px 20px;
  font-size:0.95rem;
  font-weight:600;
}

.chat-body{
  flex:1;
  overflow-y:auto;
  padding:16px;
  display:flex;
  flex-direction:column;
  gap:10px;
}

.chat-msg{
  max-width:85%;
  padding:10px 14px;
  border-radius:16px;
  font-size:0.88rem;
  line-height:1.6;
}
.chat-msg.bot{
  align-self:flex-start;
  background:var(--cream-2);
  color:var(--ink);
}
.chat-msg.user{
  align-self:flex-end;
  background:var(--morandi-green-light);
  color:var(--ink);
}

.chat-input-row{
  display:flex;
  border-top:1px solid rgba(147,165,138,0.15);
  padding:10px;
  gap:8px;
}
.chat-input-row input{
  flex:1;
  border:1px solid rgba(147,165,138,0.3);
  background:var(--cream);
  border-radius:20px;
  padding:10px 16px;
  font-family:inherit;
  font-size:0.88rem;
}
.chat-input-row input:focus{ outline:none; border-color:var(--morandi-green); }
.chat-input-row button{
  border:none;
  background:var(--morandi-green-dark);
  color:var(--white-soft);
  border-radius:50%;
  width:38px;
  height:38px;
  cursor:pointer;
  flex-shrink:0;
}

/* ---------- Scroll reveal ---------- */
.reveal{
  opacity:0;
  transform:translateY(24px);
  transition:opacity .8s ease, transform .8s ease;
}
.reveal.is-visible{
  opacity:1;
  transform:translateY(0);
}

@media (prefers-reduced-motion:reduce){
  .reveal{
    opacity:1;
    transform:none;
    transition:none;
  }
}

/* ---------- Responsive ---------- */
@media (max-width:1100px){
  .services-grid,
  .why-grid{grid-template-columns:repeat(2,1fr);}
  .testimonial-grid{grid-template-columns:1fr;max-width:560px;}
}

@media (max-width:900px){
  .nav-links{display:none;}
  .hero-brand{font-size:2.6rem;}
  .story-grid{grid-template-columns:1fr;}
  .story-photo{position:static;max-width:320px;margin:0 auto;}
  .services-grid,
  .why-grid{grid-template-columns:1fr;}
  .process-flow{flex-direction:column;}
  .process-arrow{transform:rotate(90deg);}
  .chat-panel{ right:16px; bottom:90px; }
  .chat-toggle{ right:16px; bottom:20px; }
}
