:root{--navy-950:#180a26;--navy-900:#23103a;--navy-800:#34174f;--navy-700:#541b86;--gold-500:#14a83b;--gold-400:#3dd46b;--teal-600:#541b86;--green-600:#168352;--red-600:#bd3d4a;--ink:#201434;--ink-soft:#5b4a6c;--line:#e2d9ea;--surface:#fff;--surface-soft:#f7f4fa;--shadow:0 12px 36px #2810401f;--font:"Noto Sans TC", "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif}*{box-sizing:border-box}html{background:var(--surface-soft);min-width:320px}body{color:var(--ink);background:var(--surface-soft);font-family:var(--font);letter-spacing:0;margin:0}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}.site-shell{min-height:100vh}.topbar{background:var(--navy-950);color:#fff;border-bottom:3px solid var(--gold-500);justify-content:space-between;align-items:center;height:64px;padding:0 24px;display:flex}.brand{align-items:center;gap:10px;font-weight:900;display:flex}.brand-mark{color:#fff;background:#0e8531;border-radius:50%;place-items:center;width:30px;height:30px;font-size:14px;display:grid}.topnav{align-items:center;gap:6px;display:flex}.topnav a{color:#e3d9ec;border-radius:6px;padding:8px 10px;font-size:14px;text-decoration:none}.topnav a:hover{color:#fff;background:#ffffff14}.button,.button-secondary,.button-danger,.icon-button{cursor:pointer;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:10px 16px;font-weight:800;text-decoration:none;display:inline-flex}.button{background:var(--gold-500);color:var(--navy-950);box-shadow:0 8px 20px #14a83b47}.button:hover{background:var(--gold-400)}.button-secondary{color:var(--navy-800);border-color:var(--line);background:#fff}.button-secondary:hover{border-color:var(--navy-700)}.button-danger{color:#fff;background:var(--red-600)}.button:disabled,.button-secondary:disabled,.button-danger:disabled{opacity:.55;cursor:not-allowed}.home{background:linear-gradient(150deg, var(--navy-950), var(--navy-800));color:#fff;place-items:center;min-height:100vh;padding:32px 18px;display:grid}.home-inner{width:min(880px,100%)}.home-kicker{color:var(--gold-400);letter-spacing:2px;font-weight:900}.home h1{margin:14px 0 8px;font-size:clamp(32px,6vw,58px);line-height:1.15}.home p{color:#d5c9e0;margin:0;font-size:17px;line-height:1.8}.entry-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:34px;display:grid}.entry-link{color:#fff;background:#ffffff12;border:1px solid #ffffff24;border-radius:8px;min-height:132px;padding:20px;text-decoration:none;display:block}.entry-link:hover{border-color:var(--gold-500);background:#ffffff1a}.entry-number{color:var(--gold-400);font-variant-numeric:tabular-nums;font-weight:900}.entry-link strong{margin:14px 0 5px;font-size:19px;display:block}.entry-link span{color:#c8b9d6;font-size:14px}.card-page{background:linear-gradient(180deg, #541b861a, transparent 36%), var(--surface-soft);min-height:100vh;padding:30px 16px}.business-card{border:1px solid var(--line);width:min(440px,100%);box-shadow:var(--shadow);background:#fff;border-radius:8px;margin:0 auto;overflow:hidden}.card-cover{background:linear-gradient(120deg, #14a83bf2, #14a83b8c 38%, transparent 39%), var(--navy-900);color:#fff;text-align:right;height:112px;padding:20px;font-weight:900}.portrait-wrap{text-align:center;margin-top:-78px}.portrait{object-fit:cover;object-position:center;border:5px solid #fff;border-radius:50%;width:150px;height:150px;box-shadow:0 10px 26px #28104033}.card-copy{text-align:center;padding:14px 28px 4px}.card-copy h1{margin:0;font-size:27px}.alias{color:var(--ink-soft);margin-left:8px;font-size:16px;font-weight:600}.card-title{color:var(--teal-600);margin-top:7px;font-weight:800;line-height:1.5}.card-slogan{color:var(--ink-soft);margin:13px 0 0;font-size:14px;line-height:1.75}.card-site{color:#0f6127;text-align:left;background:#eaf7ee;border:1px solid #b7e3c5;border-radius:10px;grid-template-columns:auto 1fr auto;align-items:center;gap:9px;margin:13px 0 0;padding:11px 14px;text-decoration:none;transition:background .15s,border-color .15s;display:grid}.card-site:hover{border-color:var(--gold-500);background:#ddf1e4}.card-site:focus-visible{outline:2px solid var(--gold-500);outline-offset:2px}.card-site-tag{color:#fff;white-space:nowrap;background:#0f6127;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:900}.card-site-text{font-size:13px;font-weight:700;line-height:1.6}.card-site-cue{font-size:15px;font-weight:900;transition:transform .15s}.card-site:hover .card-site-cue{transform:translate(3px)}@media (prefers-reduced-motion:reduce){.card-site,.card-site-cue{transition:none}.card-site:hover .card-site-cue{transform:none}}.card-actions{gap:10px;padding:18px 26px;display:grid}.card-actions .button:not(.line-button){background:var(--navy-700);color:#fff;box-shadow:0 8px 20px #541b8647}.card-actions .button:not(.line-button):hover{background:#6a2aa3}.line-button{color:#081b16;box-shadow:none;background:#06c755}.contact-list{border-top:1px solid var(--line);color:var(--ink-soft);gap:13px;padding:18px 26px;font-size:14px;display:grid}.contact-row{grid-template-columns:24px 1fr;gap:8px;text-decoration:none;display:grid}.contact-symbol{color:var(--teal-600);text-align:center;font-weight:900}.social-row{border-top:1px solid var(--line);grid-template-columns:repeat(3,1fr);gap:8px;padding:18px 26px 26px;display:grid}.social-row a{border:1px solid var(--line);background:var(--surface-soft);color:var(--navy-800);text-align:center;border-radius:6px;padding:10px 4px;font-size:13px;font-weight:800;text-decoration:none}.booking-page{background:var(--surface-soft);min-height:100vh}.booking-shell{width:min(760px,100%);margin:0 auto;padding:30px 18px 54px}.page-heading{margin-bottom:20px}.page-heading a{color:var(--teal-600);font-size:14px;font-weight:800;text-decoration:none}.page-heading h1{margin:8px 0 5px;font-size:30px}.page-heading p{color:var(--ink-soft);margin:0;line-height:1.7}.booking-section{border-top:1px solid var(--line);padding:22px 0}.section-heading{align-items:center;gap:10px;margin-bottom:14px;display:flex}.section-number{background:var(--navy-800);color:#fff;border-radius:50%;flex:none;place-items:center;width:26px;height:26px;font-size:13px;font-weight:900;display:grid}.section-heading h2{margin:0;font-size:18px}.section-heading small{color:var(--ink-soft)}.choice-row{flex-wrap:wrap;gap:8px;display:flex}.date-row{flex-wrap:nowrap;padding-bottom:5px;overflow-x:auto}.choice{border:1px solid var(--line);min-height:42px;color:var(--ink-soft);cursor:pointer;white-space:nowrap;background:#fff;border-radius:6px;padding:9px 13px;font-weight:700}.choice[data-active=true]{border-color:var(--teal-600);color:var(--teal-600);background:#eaf8f8}.slot-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:14px;display:grid}.meet-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.meet-choice{border:1px solid var(--line);min-height:92px;color:var(--ink);text-align:left;cursor:pointer;background:#fff;border-radius:8px;padding:14px}.meet-choice[data-active=true]{border-color:var(--teal-600);box-shadow:inset 0 0 0 1px var(--teal-600);background:#f0fbfb}.meet-choice strong,.meet-choice span{display:block}.meet-choice span{color:var(--ink-soft);margin-top:6px;font-size:13px;line-height:1.5}.field-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.field.full{grid-column:1/-1}.field label{color:var(--ink-soft);margin-bottom:6px;font-size:14px;font-weight:800;display:block}.field input,.field textarea{border:1px solid var(--line);width:100%;min-height:46px;color:var(--ink);background:#fff;border-radius:6px;outline:none;padding:11px 12px;font-size:16px}.field textarea{resize:vertical;min-height:116px;line-height:1.6}.field input:focus,.field textarea:focus{border-color:var(--teal-600);box-shadow:0 0 0 3px #541b861f}.form-error,.form-success{border-radius:6px;margin:14px 0;padding:12px 14px;line-height:1.6}.form-error{color:#8f2632;background:#fff0f1;border:1px solid #f0c6cb}.form-success{color:#125c3d;background:#ecfaf4;border:1px solid #bde7d4}.booking-submit{width:100%;min-height:52px;font-size:17px}.privacy-note{color:var(--ink-soft);text-align:center;margin:10px 0 0;font-size:13px}.admin-page{color:#f8f5fb;background:#190b27;min-height:100vh}.admin-shell{width:min(1180px,100%);margin:0 auto;padding:28px 20px 56px}.admin-heading{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;display:flex}.admin-heading h1{margin:0;font-size:28px}.admin-heading p{color:#b3a3c2;margin:6px 0 0}.admin-heading .button-secondary{color:#e5dbee;background:#221039;border-color:#43245f}.stat-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:18px;display:grid}.stat{background:#221039;border:1px solid #3b1f58;border-radius:8px;min-height:104px;padding:15px}.stat-label{color:#b3a3c2;font-size:13px}.stat-value{color:#fff;font-variant-numeric:tabular-nums;margin-top:8px;font-size:30px;font-weight:900}.stat:nth-child(2) .stat-value,.stat:nth-child(4) .stat-value{color:var(--gold-400)}.filter-row{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 18px;display:flex}.filter-row a{color:#c0b2ce;border:1px solid #43245f;border-radius:999px;padding:7px 13px;font-size:14px;font-weight:800;text-decoration:none}.filter-row a[data-active=true]{background:var(--gold-500);border-color:var(--gold-500);color:var(--navy-950)}.appointment-list{gap:12px;display:grid}.appointment{background:#221039;border:1px solid #3b1f58;border-radius:8px;padding:18px}.appointment[data-status=cancelled]{opacity:.62}.appointment-top{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.appointment-time{font-variant-numeric:tabular-nums;font-size:18px;font-weight:900}.tag-row{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.tag{color:#d2c6dd;border:1px solid #543072;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:800}.tag.high{color:#ffd98b;background:#342914;border-color:#896728}.tag.mid{color:#9de8ef;background:#102e33;border-color:#246871}.tag.low{color:#cdc2d8}.tag.confirmed{color:#a6dcff;border-color:#315f83}.tag.completed{color:#9be1bd;border-color:#2f6f50}.tag.cancelled{color:#ffb2bb;border-color:#7b3b43}.appointment-contact{color:#c0b2ce;flex-wrap:wrap;align-items:center;gap:12px;margin-top:13px;font-size:14px;display:flex}.appointment-contact strong{color:#fff;font-size:17px}.appointment-contact a{color:#7dd9e1;text-decoration:none}.appointment-body{grid-template-columns:minmax(0,1.4fr) minmax(260px,.8fr);gap:12px;margin-top:13px;display:grid}.detail-box,.suggestion-box{border:1px solid #3b1f58;border-radius:6px;padding:13px;line-height:1.7}.detail-box{color:#d0c5db}.suggestion-box{color:#f3d995;background:#211d14;border-color:#5c4a22}.box-label{color:#9e8cb0;margin-bottom:4px;font-size:12px;font-weight:900;display:block}.suggestion-box .box-label{color:#bd9b4d}.appointment-actions{flex-wrap:wrap;gap:8px;margin-top:13px;display:flex}.appointment-actions button,.appointment-actions a{color:#e3d9ec;cursor:pointer;background:#2b1444;border:1px solid #543072;border-radius:5px;min-height:36px;padding:7px 11px;font-size:13px;font-weight:800;text-decoration:none}.appointment-actions button:hover,.appointment-actions a:hover{border-color:var(--gold-500)}.appointment-actions .danger{color:#ffb4b4;border-color:#7a3340;margin-left:auto}.appointment-actions .danger:hover{background:#3a1620;border-color:#d05a6a}.empty-state{text-align:center;color:#b3a3c2;border:1px dashed #543072;border-radius:8px;padding:48px 20px}.loading-line{color:var(--ink-soft);padding:12px 0}@media (max-width:820px){.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.appointment-body{grid-template-columns:1fr}}@media (max-width:680px){.topbar{height:auto;min-height:58px;padding:10px 14px}.topnav a{padding:7px;font-size:13px}.entry-grid,.meet-grid,.field-grid{grid-template-columns:1fr}.entry-link{min-height:104px}.slot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.field.full{grid-column:auto}.admin-shell{padding:20px 12px 42px}.admin-heading,.appointment-top{flex-direction:column;align-items:stretch}.admin-heading .button-secondary{width:100%}.tag-row{justify-content:flex-start}.appointment{padding:14px}.appointment-contact{grid-template-columns:1fr;gap:4px;display:grid}}.admin-article-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.admin-article{background:#221039;border:1px solid #3b1f58;border-radius:8px;grid-template-columns:132px minmax(0,1fr) auto;align-items:start;gap:16px;padding:14px;display:grid}.admin-article[data-draft=true]{opacity:.82;border-style:dashed}.admin-article-thumb{aspect-ratio:16/10;color:#7c6890;background:#190b27;border:1px solid #3b1f58;border-radius:6px;place-items:center;font-size:12px;display:grid;overflow:hidden}.admin-article-thumb img{object-fit:cover;width:100%;height:100%}.admin-article-main strong{margin:8px 0 4px;font-size:16px;display:block}.admin-article-main p{color:#b3a3c2;margin:0;font-size:14px}.admin-article-main small{color:#7c6890;word-break:break-all;margin-top:8px;font-size:12px;display:block}.admin-article-actions{flex-direction:column;gap:8px;display:flex}.admin-article-actions form{display:contents}.admin-article-actions button,.admin-article-actions a{color:#e3d9ec;cursor:pointer;text-align:center;white-space:nowrap;background:#2b1444;border:1px solid #543072;border-radius:5px;min-height:34px;padding:7px 12px;font-size:13px;font-weight:800;text-decoration:none}.admin-article-actions button:hover,.admin-article-actions a:hover{border-color:var(--gold-500)}.admin-article-actions .danger{color:#ffb4b4;border-color:#7a3340}.admin-article-actions .danger:hover{background:#3a1620;border-color:#d05a6a}.article-form{background:#221039;border:1px solid #3b1f58;border-radius:8px;padding:22px}.article-form .field{margin-bottom:16px}.article-form .field label{color:#d2c6dd}.article-form .field input,.article-form .field textarea,.article-form .field select{color:#f8f5fb;background:#190b27;border:1px solid #543072;border-radius:6px;outline:none;width:100%;min-height:46px;padding:11px 12px;font-size:16px}.article-form .field textarea{resize:vertical;line-height:1.8}.article-form .field input:focus,.article-form .field textarea:focus,.article-form .field select:focus{border-color:var(--gold-500);box-shadow:0 0 0 3px #14a83b2e}.article-form .field input[type=file]{padding:9px 12px;font-size:14px}.field-hint{color:#9c8cad;word-break:break-all;margin:6px 0 0;font-size:13px;line-height:1.6}.cover-preview{border:1px solid #543072;border-radius:6px;max-width:360px;margin-bottom:10px;overflow:hidden}.cover-preview img{width:100%;height:auto;display:block}.cover-remove{color:#b3a3c2;align-items:center;gap:8px;margin-top:10px;font-size:14px;display:inline-flex}.cover-remove input{width:18px;height:18px}.publish-toggle{cursor:pointer;background:#190b27;border:1px solid #543072;border-radius:6px;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.publish-toggle input{flex-shrink:0;width:20px;height:20px;margin-top:2px}.publish-toggle strong{font-size:15px;display:block}.publish-toggle small{color:#b3a3c2;margin-top:3px;font-size:13px;display:block}.article-form-actions{gap:10px;margin-top:20px;display:flex}.date-picker{position:relative}.date-picker-trigger{color:#f8f5fb;cursor:pointer;text-align:left;background:#190b27;border:1px solid #543072;border-radius:6px;justify-content:space-between;align-items:center;width:100%;min-height:46px;padding:11px 12px;font-size:16px;display:flex}.date-picker-trigger:hover{border-color:#6b3d94}.date-picker-icon{opacity:.85}.date-picker-panel{z-index:20;background:#221039;border:1px solid #543072;border-radius:8px;width:280px;max-width:90vw;padding:14px;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 12px 36px #28104073}.date-picker-nav{color:#f8f5fb;justify-content:space-between;align-items:center;margin-bottom:10px;font-size:14px;display:flex}.date-picker-nav strong{text-align:center;flex:1}.date-picker-nav button{color:#d2c6dd;cursor:pointer;background:0 0;border:none;border-radius:6px;min-width:34px;min-height:34px;padding:4px 6px;font-size:18px;line-height:1}.date-picker-nav button:hover{background:#331a50}.date-picker-weekdays,.date-picker-grid{text-align:center;grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.date-picker-weekdays{color:#9c8cad;margin-bottom:6px;font-size:12px}.date-picker-day{color:#f8f5fb;cursor:pointer;background:0 0;border:none;border-radius:6px;min-height:36px;padding:8px 0;font-size:14px}.date-picker-day:hover{background:#331a50}.date-picker-day[data-today=true]{box-shadow:inset 0 0 0 1px var(--gold-500)}.date-picker-day[data-selected=true]{background:var(--teal-600);color:#fff}.date-picker-today{color:#d2c6dd;cursor:pointer;background:#190b27;border:1px solid #543072;border-radius:6px;width:100%;margin-top:10px;padding:8px;font-size:13px}.date-picker-today:hover{border-color:var(--gold-500)}@media (max-width:680px){.admin-article{grid-template-columns:1fr}.admin-article-thumb{max-width:200px}.admin-article-actions{flex-flow:wrap}.article-form{padding:16px}}.social-links{flex-wrap:wrap;gap:8px;display:flex}.card-social{justify-content:center;margin-top:14px}.social-link{border:1px solid var(--line);min-height:44px;color:var(--navy-800);background:#fff;border-radius:999px;align-items:center;gap:7px;padding:10px 16px;font-size:14px;font-weight:800;text-decoration:none;display:inline-flex}.social-link:hover{border-color:var(--navy-700)}.social-link-facebook:hover{color:#1877f2;border-color:#1877f2}.social-link-instagram:hover{color:#c13584;border-color:#c13584}.social-link-line:hover{color:#06c755;border-color:#06c755}
