
:root{--bg:#f5f7fb;--surface:#fff;--surface2:#f8fafc;--line:#e3e8f0;--text:#1c2430;--muted:#687486;--accent:#d83150;--accent2:#b9203b;--blue:#2563eb;--shadow:0 10px 30px rgba(30,50,80,.08);--radius:18px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;line-height:1.72;min-height:100vh}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto}.preview-strip{background:#fff3c8;color:#6b5310;text-align:center;font-size:12px;font-weight:700;padding:6px 12px;border-bottom:1px solid #f1df9c}.site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);box-shadow:0 2px 14px rgba(30,50,80,.04)}.header-top{max-width:1280px;margin:auto;padding:11px 22px;display:flex;align-items:center;gap:20px}.brand{display:flex;align-items:center;gap:12px;margin-right:auto}.brand-logo{width:48px;height:48px;object-fit:contain;padding:4px;border-radius:14px;border:1px solid #f0d5da;background:#fff}.brand-copy{display:flex;flex-direction:column;line-height:1.2}.brand-copy strong{font-size:20px;letter-spacing:.04em;color:#202733}.brand-copy small{color:var(--muted);font-size:12px;margin-top:4px}.header-actions{display:flex;align-items:center;gap:10px}.admin-link{padding:8px 13px;border-radius:10px;border:1px solid #e8b7c0;background:#fff7f8;color:#a71d37;font-size:13px;font-weight:700}.admin-link:hover{background:#feecef}.menu-toggle{display:none;border:1px solid var(--line);color:#222;background:#fff;border-radius:10px;padding:7px 12px;font-size:18px}.nav-shell{background:#fff;border-top:1px solid #f0f2f6}.primary-nav,.secondary-nav{max-width:1280px;margin:auto;display:flex;align-items:center;gap:4px;padding:0 22px}.primary-nav>a,.nav-dropdown>.dropdown-toggle{padding:10px 10px;font-size:13px;color:#364152;border-radius:8px;white-space:nowrap}.primary-nav>a:hover,.nav-dropdown>.dropdown-toggle:hover{background:#f8eef0;color:var(--accent2)}.nav-dropdown{position:relative}.dropdown-menu{display:none;position:absolute;top:100%;right:0;min-width:190px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:6px;box-shadow:var(--shadow)}.nav-dropdown:hover .dropdown-menu{display:block}.dropdown-menu a{display:block;padding:9px 10px;border-radius:8px;font-size:13px}.dropdown-menu a:hover{background:#f6f8fb}.secondary-nav{border-top:1px solid #f4f5f7;padding-top:7px;padding-bottom:7px}.secondary-nav a{font-size:13px;padding:5px 10px;border-radius:999px;background:#f5f7fa;color:#465365}.secondary-nav a:hover{background:#eaf0fb;color:#214d9a}.nav-label{font-size:12px;color:#8b95a5;margin-right:3px}.app-shell{max-width:1200px;margin:0 auto;padding:32px 22px 64px;min-height:72vh}.hero{display:grid;grid-template-columns:1.45fr .8fr;gap:22px;margin-bottom:28px}.hero-main,.hero-stats{border:1px solid var(--line);border-radius:24px;overflow:hidden;box-shadow:var(--shadow);background:#fff}.hero-main{padding:38px;background:linear-gradient(90deg,rgba(255,255,255,.98),rgba(255,255,255,.82)),url('/assets/love-banner.jpg') center/cover no-repeat;min-height:300px;display:flex;flex-direction:column;justify-content:center}.eyebrow{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-weight:800}.hero h1{font-size:clamp(32px,5vw,54px);line-height:1.08;margin:10px 0 14px;color:#1e2733}.hero p{max-width:680px;color:#4f5c6c;font-size:16px}.hero-stats{display:grid;grid-template-columns:1fr 1fr}.stat{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:135px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.stat:nth-child(2n){border-right:0}.stat:nth-last-child(-n+2){border-bottom:0}.stat strong{font-size:30px;color:var(--accent)}.stat span{color:var(--muted);font-size:13px}.search-box{background:#fff;border:1px solid var(--line);border-radius:16px;padding:12px;box-shadow:var(--shadow);margin-bottom:20px}.search-box form{display:flex;gap:10px}.search-box input{flex:1;border:1px solid var(--line);border-radius:11px;padding:12px 14px;font-size:15px;background:#fbfcfe;color:var(--text)}.search-box button{border:0;border-radius:11px;background:var(--accent);color:#fff;padding:0 22px;font-weight:800;cursor:pointer}.search-box button:hover{background:var(--accent2)}.category-pills{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 25px}.pill{padding:7px 12px;border-radius:999px;background:#fff;border:1px solid var(--line);color:#4b5666;font-size:13px}.pill.active,.pill:hover{border-color:#e7aab6;background:#fff3f5;color:#a51e38}.section-title{display:flex;align-items:end;justify-content:space-between;gap:15px;margin:25px 0 16px}.section-title h1,.section-title h2{margin:0;color:#202936}.section-title p{margin:0;color:var(--muted)}.article-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.article-card{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:0 6px 20px rgba(30,50,80,.05);display:flex;flex-direction:column;min-width:0}.article-card:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(30,50,80,.1)}.card-media{height:180px;background:#f1f3f7;display:block;overflow:hidden}.card-media img{width:100%;height:100%;object-fit:cover}.card-placeholder{height:100%;display:grid;place-items:center;color:#a7afba;font-size:28px;font-weight:900}.card-body{padding:17px;display:flex;flex-direction:column;flex:1}.meta,.article-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;color:var(--muted);font-size:12px}.badge{padding:3px 8px;background:#fff0f3;border:1px solid #f0c3cc;color:#a2263d;border-radius:999px}.article-card h3{font-size:18px;line-height:1.45;margin:10px 0}.article-card h3 a:hover{color:var(--accent)}.excerpt{font-size:13px;color:#657083;margin:0 0 14px;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.card-arrow{margin-top:auto;color:#b02642;font-size:13px;font-weight:800}.article-wrap{max-width:920px;margin:auto}.breadcrumbs{font-size:13px;color:#7b8795;margin-bottom:14px}.article-header{background:#fff;border:1px solid var(--line);border-radius:22px;padding:28px 32px;margin-bottom:18px;box-shadow:var(--shadow)}.article-header h1{font-size:clamp(28px,4vw,42px);line-height:1.28;margin:8px 0 14px}.article-content{background:#fff;border:1px solid var(--line);border-radius:22px;padding:32px;box-shadow:var(--shadow);overflow:hidden}.article-content p{margin:0 0 1.2em}.article-content h1,.article-content h2,.article-content h3,.article-content h4{line-height:1.35;margin-top:1.5em}.article-content img{display:block;margin:16px auto;border-radius:10px}.article-content iframe{width:100%;aspect-ratio:16/9;height:auto;border:0;border-radius:12px;margin:14px 0}.article-content a{color:#1c63b7;text-decoration:underline;text-underline-offset:3px}.article-actions{display:flex;gap:10px;margin:18px 0}.btn{border:1px solid var(--line);background:#fff;color:#374151;border-radius:10px;padding:9px 14px;cursor:pointer}.btn:hover{background:#f8fafc}.empty-state{background:#fff;border:1px solid var(--line);border-radius:18px;padding:36px;text-align:center;color:#667284}.site-footer{border-top:1px solid var(--line);background:#fff;margin-top:30px}.footer-inner{max-width:1200px;margin:auto;padding:26px 22px;color:#7a8595;font-size:12px;display:flex;justify-content:space-between;gap:20px}.footer-inner strong{display:block;color:#293241;font-size:15px}.footer-inner span{display:block;margin-top:4px}.footer-inner p{max-width:600px;text-align:right}.search-results{margin-top:20px}
/* Admin */.admin-page{background:#f4f6fa}.admin-layout{min-height:100vh;display:grid;grid-template-columns:245px 1fr}.admin-sidebar{background:#fff;border-right:1px solid var(--line);padding:18px;position:sticky;top:0;height:100vh}.admin-brand{display:flex;align-items:center;gap:10px;padding:4px 4px 20px}.admin-brand img{width:42px;height:42px;border-radius:12px;object-fit:contain;padding:3px;background:#fff}.admin-brand strong{display:block}.admin-brand small{color:var(--muted)}.admin-nav{display:flex;flex-direction:column;gap:5px}.admin-nav button,.admin-nav a{border:0;background:transparent;text-align:left;padding:10px 12px;border-radius:10px;color:#465264;font:inherit;cursor:pointer}.admin-nav button:hover,.admin-nav button.active,.admin-nav a:hover{background:#fff0f3;color:#a51e38}.admin-main{padding:26px 30px;min-width:0}.admin-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:24px}.admin-topbar h1{margin:0;font-size:28px}.admin-status{font-size:12px;padding:6px 10px;background:#fff;border:1px solid var(--line);border-radius:999px;color:#627083}.admin-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px}.admin-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 5px 18px rgba(30,50,80,.04)}.admin-card strong{font-size:28px;display:block;color:#222c39}.admin-card span{font-size:13px;color:var(--muted)}.admin-panel{display:none}.admin-panel.active{display:block}.panel-box{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 5px 18px rgba(30,50,80,.04)}.panel-head{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:14px}.panel-head h2{margin:0;font-size:20px}.toolbar{display:flex;gap:8px;flex-wrap:wrap}.toolbar input,.toolbar select,.login-box input{border:1px solid var(--line);background:#fff;border-radius:9px;padding:9px 10px}.small-btn,.primary-btn,.danger-btn{border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 11px;cursor:pointer;font-weight:700}.primary-btn{background:var(--accent);border-color:var(--accent);color:#fff}.danger-btn{color:#a42038}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th,.data-table td{padding:10px;border-bottom:1px solid #edf0f4;text-align:left;vertical-align:top}.data-table th{color:#6b7787;font-size:12px;background:#fafbfc}.data-table tr:hover td{background:#fcfcfd}.status-chip{display:inline-block;padding:3px 7px;border-radius:999px;background:#edf2f7;font-size:11px}.status-published{background:#e8f7ee;color:#247445}.status-draft{background:#fff4d8;color:#8b6513}.status-hidden{background:#f5e9ec;color:#8b3144}.login-box{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.notice{padding:10px 12px;border:1px solid #e7d8a3;background:#fff9e6;border-radius:10px;color:#745e1c;font-size:13px;margin-bottom:14px}.admin-editor{display:grid;gap:10px}.admin-editor label{font-size:12px;color:#6f7b8c}.admin-editor input,.admin-editor textarea,.admin-editor select{width:100%;border:1px solid var(--line);border-radius:10px;padding:10px;font:inherit}.admin-editor textarea{min-height:240px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}.modal{display:none;position:fixed;inset:0;background:rgba(20,28,40,.34);z-index:100;align-items:center;justify-content:center;padding:20px}.modal.open{display:flex}.modal-box{background:#fff;border-radius:18px;padding:22px;width:min(820px,100%);max-height:90vh;overflow:auto;box-shadow:0 20px 70px rgba(30,40,60,.2)}
@media(max-width:980px){.article-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hero{grid-template-columns:1fr}.primary-nav{flex-wrap:wrap}.admin-cards{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.header-top{padding:9px 14px}.brand-logo{width:42px;height:42px}.brand-copy strong{font-size:17px}.brand-copy small{font-size:10px}.admin-link{display:none}.menu-toggle{display:block}.nav-shell{display:none;padding:8px 14px 14px}.nav-shell.open{display:block}.primary-nav,.secondary-nav{padding:0;display:flex;flex-direction:column;align-items:stretch;border:0;gap:2px}.primary-nav>a,.nav-dropdown>.dropdown-toggle,.secondary-nav a{display:block;padding:10px;background:transparent;border-radius:8px}.nav-dropdown:hover .dropdown-menu{display:none}.dropdown-menu{position:static;display:block!important;border:0;box-shadow:none;padding-left:18px;background:#fafafa}.nav-label{padding:9px 10px 2px}.app-shell{padding:22px 14px 50px}.hero-main{padding:28px 22px;min-height:280px}.article-grid{grid-template-columns:1fr}.card-media{height:205px}.article-header,.article-content{padding:22px 18px;border-radius:16px}.footer-inner{flex-direction:column}.footer-inner p{text-align:left}.admin-layout{grid-template-columns:1fr}.admin-sidebar{position:static;height:auto;border-right:0;border-bottom:1px solid var(--line)}.admin-nav{display:grid;grid-template-columns:repeat(2,1fr)}.admin-main{padding:20px 14px}.admin-cards{grid-template-columns:1fr 1fr}.data-wrap{overflow:auto}.admin-topbar{align-items:flex-start;flex-direction:column}}

/* Contact + account */
.contact-intro{margin-bottom:24px;color:#526071;font-size:15px}.contact-form{display:grid;gap:18px;max-width:720px}.form-row{display:grid;gap:7px}.form-row label{font-weight:800;color:#283342}.form-row .required{color:#bb2943;font-size:12px;margin-left:5px}.form-row input,.form-row textarea{width:100%;border:1px solid #dce2ea;background:#fff;border-radius:10px;padding:11px 12px;font:inherit;color:#1c2430;outline:none}.form-row input:focus,.form-row textarea:focus{border-color:#e5a4b1;box-shadow:0 0 0 3px #fff0f3}.form-row textarea{min-height:210px;resize:vertical}.field-help{font-size:12px;color:#7a8595}.contact-submit{justify-self:start;border:0;border-radius:10px;background:var(--accent);color:#fff;padding:10px 20px;font-weight:800;cursor:pointer}.contact-submit:disabled{opacity:.55;cursor:wait}.form-result{display:none;padding:11px 13px;border-radius:10px;font-size:13px}.form-result.show{display:block}.form-result.success{background:#eaf8ef;color:#21683b;border:1px solid #c9ead5}.form-result.warn{background:#fff8e4;color:#755b12;border:1px solid #ead99d}.form-result.error{background:#fff0f2;color:#8d2137;border:1px solid #efc2cb}.hp-field{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}.account-shell{max-width:720px;margin:0 auto}.account-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:26px;box-shadow:var(--shadow)}.account-card h1{margin-top:0}.account-actions{display:flex;gap:10px;flex-wrap:wrap}.line-btn{border:0;border-radius:10px;background:#06c755;color:#fff;padding:11px 18px;font-weight:800;cursor:pointer}.account-grid{display:grid;gap:15px;margin-top:18px}.account-grid label{font-weight:700;font-size:13px}.account-grid input{width:100%;margin-top:5px;border:1px solid var(--line);border-radius:10px;padding:11px;font:inherit}.complete-chip{display:inline-block;padding:5px 9px;border-radius:999px;font-size:12px;background:#fff4d8;color:#7c5d17}.complete-chip.done{background:#e8f7ee;color:#247445}.privacy-note{font-size:12px;color:#7b8795;margin-top:14px}.admin-subgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.admin-inline-form{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 16px}.admin-inline-form input{border:1px solid var(--line);border-radius:9px;padding:9px 10px}.message-preview{max-width:440px;white-space:pre-wrap;line-height:1.5}.member-contact{font-size:12px;line-height:1.5}.role-select,.status-select{border:1px solid var(--line);border-radius:8px;padding:6px;background:#fff}.delivery-sent{color:#247445}.delivery-failed{color:#a42038}.delivery-not_configured{color:#8b6513}@media(max-width:860px){.admin-subgrid{grid-template-columns:1fr}}
