:root{--purple: #B07A3C;--pink: #8C4A33;--ink: #2B2620;--muted: #8A7A64;--line: #E7DDCB;--bg: #F7F1E8;--serif: "Georgia", "Times New Roman", "Noto Serif TC", "Songti TC", "Source Han Serif TC", serif;--blue: #2563eb;--d-bg: #f5f6f8;--d-line: #e5e7eb;--d-ink: #1f2937;--d-mid: #4b5563;--d-mute: #6b7280;--d-mute2: #9ca3af;--d-danger: #dc2626}*{box-sizing:border-box}body{margin:0;font-family:Helvetica Neue,Arial,PingFang TC,Microsoft JhengHei,sans-serif;color:var(--ink);background:var(--bg)}a{color:var(--purple)}button{font-family:inherit;cursor:pointer}.loading-screen,.loading{padding:60px;text-align:center;color:var(--muted)}.error-box{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca;padding:10px 14px;border-radius:10px;margin:10px 0}.err{color:#b91c1c}.err.small{font-size:12px}.muted{color:var(--muted)}.btn{background:var(--purple);color:#fff;border:none;padding:12px 26px;border-radius:999px;font-size:15px;font-weight:600}.btn:hover{filter:brightness(1.05)}.btn:disabled{opacity:.6;cursor:default}.btn.ghost{background:#fff;color:var(--purple);border:1px solid var(--purple)}.btn.sm{padding:8px 18px;font-size:14px}.btn.full{width:100%}.link-btn{background:none;border:none;color:var(--purple);text-decoration:underline;padding:0;cursor:pointer}.link-btn.danger{color:#b91c1c}.badge.premium{display:inline-flex;align-items:center;gap:3px;background:linear-gradient(135deg,#f59e0b,#ec4899);color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.modal{position:relative;background:#fff;border-radius:16px;width:100%;max-width:380px;padding:32px 28px 24px;box-shadow:0 20px 60px #00000040}.modal-x{position:absolute;top:14px;right:14px;background:none;border:none;color:var(--muted)}.modal-brand{font-size:20px;font-weight:800;color:var(--purple);text-align:center}.modal-sub{text-align:center;color:var(--muted);font-size:14px;margin:6px 0 18px}.modal label{display:block;font-size:13px;font-weight:600;margin-bottom:12px}.modal input{width:100%;margin-top:6px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:15px;font-weight:400}.modal-foot{text-align:center;color:var(--muted);font-size:12px;margin-top:14px}.card-tile{font:inherit;text-align:left;cursor:pointer;padding:0}.tile-art{position:relative}.tile-tier{position:absolute;top:10px;right:10px;display:inline-flex;align-items:center;gap:3px;background:linear-gradient(135deg,#f59e0b,#ec4899);color:#fff;font-size:11px;font-weight:700;padding:3px 8px;border-radius:999px}.tile-lock{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#ffffff8c;color:#6b7280}.card-tile.locked{cursor:not-allowed}.card-tile.locked .tile-info h3{color:var(--muted)}.locked-panel{text-align:center;background:#faf5ff;border:1px dashed var(--purple);border-radius:14px;padding:28px 20px;color:var(--muted)}.locked-panel h3{margin:8px 0 4px;color:var(--ink)}.locked-panel .btn{margin:10px 0}.toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%);background:#1f2937;color:#fff;padding:12px 22px;border-radius:999px;font-size:14px;z-index:120;box-shadow:0 8px 24px #00000040}.tier-select{padding:4px 8px;border:1px solid var(--d-line);border-radius:8px;font-size:13px}.page{max-width:1080px;margin:0 auto;padding:0 20px 60px}.page.narrow{max-width:620px}.topbar{display:flex;justify-content:space-between;align-items:center;padding:18px 0}.brand{font-size:22px;font-weight:800}.brand span{color:var(--purple)}.topbar-right{display:flex;align-items:center;gap:12px}.badge{background:#ede9fe;color:var(--purple);font-size:12px;padding:3px 10px;border-radius:999px;font-weight:700}.who{color:var(--muted);font-size:14px}.hero{text-align:center;padding:40px 0 30px}.hero h1{font-size:34px;margin:0 0 12px;background:linear-gradient(135deg,var(--purple),var(--pink));-webkit-background-clip:text;background-clip:text;color:transparent}.hero p{color:var(--muted);font-size:17px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:22px}.card-tile{text-decoration:none;color:inherit;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#fff;transition:transform .15s,box-shadow .15s}.card-tile:hover{transform:translateY(-4px);box-shadow:0 12px 30px #7c3aed24}.tile-art{height:150px;display:flex;align-items:center;justify-content:center}.tile-emoji{font-size:60px}.tile-info{padding:14px 16px 18px}.tile-cat{font-size:12px;color:var(--purple);font-weight:700}.tile-info h3{margin:4px 0 6px}.tile-info p{margin:0;color:var(--muted);font-size:14px}.empty{color:var(--muted);padding:40px}.foot{text-align:center;color:var(--muted);font-size:13px;padding-top:50px}.page.split{max-width:1040px;margin:0 auto;padding:30px 20px 60px;display:grid;grid-template-columns:1fr 1fr;gap:36px}.back{display:inline-block;margin-bottom:14px;text-decoration:none}.form-col label{display:block;margin-bottom:14px;font-size:14px;font-weight:600}.form-col input,.form-col textarea,.inline-form input,.inline-form select,.card-form input,.card-form textarea,.card-form select{width:100%;margin-top:6px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:15px;font-weight:400;font-family:inherit}.form-col input[type=color]{padding:4px;height:42px}.success-box{background:#fff;border:1px solid var(--line);border-radius:16px;padding:36px;text-align:center}.success-box h2{margin-top:0}.share-link{display:block;word-break:break-all;background:#faf5ff;padding:10px;border-radius:8px;margin:8px 0 20px;font-size:13px}.actions{display:flex;gap:12px;justify-content:center}.card-canvas{position:relative;border-radius:18px;min-height:360px;overflow:hidden;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 40px #00000014}.card-inner{position:relative;z-index:2;text-align:center;padding:30px}.card-emoji{font-size:76px;margin-bottom:6px;animation:bob 2.4s ease-in-out infinite}.card-inner h2{margin:6px 0;font-size:26px}.card-to{font-weight:600}.card-msg{white-space:pre-wrap;color:#444;max-width:360px;margin:14px auto;line-height:1.7}.card-from{color:var(--muted)}.card-floats{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.float{position:absolute;bottom:-30px;opacity:.6;animation:rise 6s linear infinite}@keyframes rise{0%{transform:translateY(0);opacity:0}10%{opacity:.7}to{transform:translateY(-420px);opacity:0}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.card-view-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(160deg,#f5f3ff,#fdf2f8)}.card-view-inner{width:100%;max-width:520px}.view-footer{text-align:center;color:var(--muted);font-size:13px;margin-top:16px}.envelope{text-align:center;cursor:pointer}.envelope-flap{font-size:90px;animation:bob 2.4s ease-in-out infinite}.envelope p{font-size:18px;color:var(--muted);margin:8px 0 18px}.gate{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#f5f3ff,#fdf2f8);padding:24px}.gate-box{background:#fff;border-radius:18px;padding:44px 40px;text-align:center;max-width:420px;box-shadow:0 16px 50px #7c3aed26}.gate-logo{font-weight:800;color:var(--purple);letter-spacing:1px}.gate-box h1{margin:12px 0}.gate-box p{color:var(--muted)}.google-login{display:flex;flex-direction:column;align-items:center;margin-top:18px}.admin{display:grid;grid-template-columns:240px 1fr;min-height:100vh;background:var(--d-bg);color:var(--d-ink)}.admin-nav{background:#fff;border-right:1px solid var(--d-line);display:flex;flex-direction:column}.admin-brand{height:56px;display:flex;flex-direction:column;justify-content:center;padding:0 20px;border-bottom:1px solid var(--d-line)}.admin-brand .b1{font-size:14px;font-weight:800;letter-spacing:1px;color:var(--d-ink)}.admin-brand .b2{font-size:10px;letter-spacing:3px;color:var(--d-mute2)}.admin-nav nav{flex:1;overflow-y:auto;padding:14px 0;display:flex;flex-direction:column}.admin-nav a{display:flex;align-items:center;gap:12px;padding:10px 20px;font-size:14px;color:var(--d-mid);text-decoration:none;transition:background .15s,color .15s}.admin-nav a:hover{background:var(--d-bg)}.admin-nav a.active{background:#2563eb1a;color:var(--blue);font-weight:600;box-shadow:inset -2px 0 0 var(--blue)}.admin-user{border-top:1px solid var(--d-line);padding:12px}.admin-user-row{display:flex;align-items:center;gap:8px;padding:2px 6px 8px}.admin-user-row img{width:32px;height:32px;border-radius:50%;object-fit:cover;background:var(--d-bg)}.admin-user-meta{min-width:0}.admin-user-meta .nm{font-size:12px;font-weight:600;color:var(--d-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-user-meta .em{font-size:10px;color:var(--d-mute2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-logout{width:100%;display:flex;align-items:center;justify-content:center;gap:6px;font-size:12px;color:var(--d-mute);background:none;border:none;padding:8px;border-radius:8px}.admin-logout:hover{background:var(--d-bg)}.admin-main{padding:24px 32px;overflow:auto}.admin-main h1{margin-top:0;font-size:20px}.admin-gate{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--d-bg);padding:16px}.admin-gate-wrap{width:100%;max-width:360px}.admin-gate-brand{text-align:center;margin-bottom:28px}.admin-gate-brand .b1{font-size:24px;font-weight:800;letter-spacing:1px;color:var(--d-ink)}.admin-gate-brand .b2{font-size:13px;letter-spacing:3px;color:var(--d-mute);margin-top:4px}.admin-gate-card{background:#fff;border:1px solid var(--d-line);border-radius:14px;box-shadow:0 2px 8px #0000000a;padding:32px;text-align:center}.admin-gate-card h2{font-size:16px;margin:0 0 4px;color:var(--d-ink)}.admin-gate-card p{font-size:12px;color:var(--d-mute);margin:0 0 22px}.admin-gate-btn{display:flex;justify-content:center}.admin-gate-foot{text-align:center;color:var(--d-mute2);font-size:11px;margin-top:22px}.admin .btn{background:var(--blue);border-radius:8px;padding:9px 18px;font-size:14px}.admin .btn.ghost{background:#fff;color:var(--blue);border-color:var(--blue)}.admin .link-btn{color:var(--blue)}.admin .link-btn.danger{color:var(--d-danger)}.inline-form{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:18px 0}.inline-form input,.inline-form select{width:auto;margin:0}.chk,.chk2{display:inline-flex;align-items:center;gap:6px;font-size:14px}.tbl{width:100%;border-collapse:collapse;margin-top:10px;background:#fff;border:1px solid var(--d-line);border-radius:12px;overflow:hidden}.tbl th,.tbl td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--d-line);font-size:14px}.tbl tr:last-child td{border-bottom:none}.tbl th{background:#f9fafb;color:var(--d-mute);font-weight:600}.tbl select{width:auto;margin:0;padding:5px 8px}.self-tag{background:#2563eb1a;color:var(--blue);font-size:11px;padding:1px 7px;border-radius:999px;margin-left:6px}.card-form{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;margin:16px 0 24px}.card-form .grid2{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.card-form label{font-size:13px;font-weight:600}.card-form .chk2{align-self:end;padding-bottom:10px}.mini-art{display:inline-flex;width:34px;height:34px;border-radius:8px;align-items:center;justify-content:center}.pill{border:1px solid var(--line);background:#fff;border-radius:999px;padding:4px 12px;font-size:13px}.pill.on{background:#dcfce7;border-color:#86efac;color:#15803d}.stat{padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.stat.gray{background:#f3f4f6;color:#6b7280}.stat.blue{background:#dbeafe;color:#1d4ed8}.stat.green{background:#dcfce7;color:#15803d}.stat.red{background:#fee2e2;color:#b91c1c}.setting-card{display:flex;justify-content:space-between;align-items:center;gap:24px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:22px 24px;margin:18px 0}.setting-card h3{margin:0 0 6px}.switch{position:relative;display:inline-block;width:54px;height:30px;flex-shrink:0}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;top:0;right:0;bottom:0;left:0;background:#ccc;border-radius:999px;transition:.2s}.slider:before{content:"";position:absolute;height:22px;width:22px;left:4px;bottom:4px;background:#fff;border-radius:50%;transition:.2s}.switch input:checked+.slider{background:var(--blue)}.switch input:checked+.slider:before{transform:translate(24px)}@media (max-width: 760px){.page.split{grid-template-columns:1fr}.card-form .grid2{grid-template-columns:repeat(2,1fr)}.admin{grid-template-columns:1fr}.admin-nav{flex-direction:row;align-items:center;overflow-x:auto;border-right:none;border-bottom:1px solid var(--d-line)}.admin-brand{height:auto;padding:12px 16px;border-bottom:none;border-right:1px solid var(--d-line);flex-shrink:0}.admin-nav nav{flex-direction:row;padding:0;flex:0 0 auto}.admin-nav a{white-space:nowrap}.admin-nav a.active{box-shadow:inset 0 -2px 0 var(--blue)}.admin-user{display:none}.admin-main{padding:18px 16px}}.member-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:6px 0 22px;flex-wrap:wrap}.member-tabs a{display:inline-flex;align-items:center;gap:6px;padding:10px 16px;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;font-size:15px}.member-tabs a.on{color:var(--purple);border-bottom-color:var(--purple);font-weight:600}.member-tabs-spacer{margin-left:auto}.member-body{padding-bottom:40px}.member-body h1{font-size:22px;margin:0 0 4px}.empty-cta{text-align:center;padding:60px 20px}.empty-cta h2{margin:0 0 8px}.empty-cta .btn{margin:16px 0 12px}.empty-cta .link-btn{display:block;margin-top:8px}.status-pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.status-pill.ok{background:#ecfdf5;color:#047857}.status-pill.open{background:#eef2ff;color:#4338ca}.status-pill.pend{background:#fff7ed;color:#b45309}.status-pill.fail{background:#fef2f2;color:#b91c1c}.sm,.tbl td.sm,.tbl .sm{font-size:12px}tr.dim{opacity:.5}.reminder-form{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;margin:16px 0 24px}.reminder-form .grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:14px}.reminder-form label{display:flex;flex-direction:column;font-size:13px;color:var(--muted);gap:5px}.reminder-form input,.reminder-form select{padding:9px 11px;border:1px solid var(--line);border-radius:10px;font-size:15px;color:var(--ink)}.recipients{margin:6px 0 12px}.field-label{font-size:14px;color:var(--ink);font-weight:600;margin-bottom:8px}.recipient-row{display:flex;gap:8px;margin-bottom:8px;align-items:center}.recipient-row input{flex:1;min-width:0;padding:9px 11px;border:1px solid var(--line);border-radius:10px;font-size:15px}.recipient-row select{padding:9px 8px;border:1px solid var(--line);border-radius:10px;font-size:13px;color:var(--muted)}.icon-btn{background:none;border:1px solid var(--line);border-radius:8px;padding:8px;color:var(--muted);cursor:pointer;display:inline-flex}.icon-btn:disabled{opacity:.4;cursor:default}.chk-inline{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted);margin:4px 0 14px}.chk-inline input{width:auto}.result-list{list-style:none;padding:0;margin:14px 0;text-align:left}.result-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}.share-link.sm{font-size:13px}@media (max-width: 720px){.reminder-form .grid2{grid-template-columns:1fr}.recipient-row{flex-wrap:wrap}.recipient-row input{flex:1 1 40%}}.tile-img{width:100%;height:100%;object-fit:cover;display:block}.card-canvas.movie{background:#000}.movie-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;z-index:1}.movie-bar{position:absolute;left:0;right:0;height:26px;background:#000;z-index:3}.movie-bar.top{top:0}.movie-bar.bottom{bottom:0}.movie-scrim{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:linear-gradient(to top,#000000d1,#00000059 38%,#0000 62%)}.movie-caption{position:absolute;left:0;right:0;bottom:26px;z-index:4;padding:22px 28px 26px;text-align:center;color:#fff}.movie-caption h2{margin:0 0 8px;font-size:26px;font-weight:700;text-shadow:0 2px 10px rgba(0,0,0,.5);letter-spacing:1px}.movie-caption .to{font-weight:600;margin:2px 0;text-shadow:0 1px 6px rgba(0,0,0,.6)}.movie-caption .msg{white-space:pre-wrap;max-width:420px;margin:12px auto;line-height:1.7;font-size:16px;text-shadow:0 1px 8px rgba(0,0,0,.7)}.movie-caption .from{color:#e5e7eb;margin-top:8px;text-shadow:0 1px 6px rgba(0,0,0,.6)}.mini-art-btn{padding:0;border:none;background:none;cursor:pointer;display:inline-flex}.mini-img{width:48px;height:34px;object-fit:cover;border-radius:8px;display:block}.img-edit{display:flex;align-items:center;gap:6px}.img-edit input{width:200px;padding:6px 8px;border:1px solid var(--d-line);border-radius:8px;font-size:13px}.card-form2{background:#fff;border:1px solid var(--line);border-radius:14px;padding:22px;margin:16px 0 24px}.card-form2 .cf-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.card-form2 .cf-grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:10px}.cf-field{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--d-mid)}.cf-field input,.cf-field select,.cf-field textarea{font-weight:400;padding:9px 11px;border:1px solid var(--line);border-radius:10px;font-size:15px;color:var(--ink);width:100%;box-sizing:border-box}.cf-field input[type=color]{height:40px;padding:4px;cursor:pointer}.cf-check{flex-direction:row;align-items:center;gap:8px;align-self:end;padding-bottom:10px}.cf-check input{width:auto}.cf-check span{font-weight:600}.card-form2>.cf-field{margin-top:16px}.card-form2>.btn{margin-top:18px}.cf-section{margin-top:18px}.cf-section-title{font-size:13px;font-weight:700;color:var(--d-mid);margin-bottom:8px}.cf-fallback{margin-top:16px;border:1px dashed var(--line);border-radius:10px;padding:10px 14px}.cf-fallback summary{font-size:13px;color:var(--muted);cursor:pointer}.img-upload{display:flex;flex-direction:column;gap:10px;align-items:flex-start}.img-upload-preview{width:220px;height:150px;object-fit:cover;border-radius:12px;border:1px solid var(--line)}.img-upload.compact .img-upload-preview{width:120px;height:80px;border-radius:8px}.img-upload-empty{width:220px;height:150px;border-radius:12px;border:1px dashed var(--line);display:flex;align-items:center;justify-content:center;color:var(--mute2, #9ca3af);font-size:13px;background:var(--d-bg)}.img-upload-actions{display:flex;align-items:center;gap:12px}.img-upload-actions .btn.sm{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.error-box.sm{font-size:12px;padding:6px 10px}.cell-upload{display:flex;flex-direction:column;gap:6px;align-items:flex-start}@media (max-width: 860px){.card-form2 .cf-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 560px){.card-form2 .cf-grid,.card-form2 .cf-grid3{grid-template-columns:1fr}}.premium-badge{height:22px;width:auto;display:inline-block;vertical-align:middle;border-radius:3px}.premium-badge.tile-tier{padding:0;background:none;height:22px}.logo{display:inline-flex;align-items:center;gap:9px;text-decoration:none}.logo svg{display:block}.logo-text{font-family:var(--serif);font-weight:700;font-size:21px;color:var(--ink);letter-spacing:.3px}.brand{display:inline-flex;align-items:center;text-decoration:none}h1,h2,.logo-text,.hero h1,.movie-caption h2,.success-box h2,.empty-cta h2,.modal-brand{font-family:var(--serif)}body{-webkit-font-smoothing:antialiased}.card-tile{box-shadow:0 2px 10px #3c28140d}.card-tile:hover{box-shadow:0 14px 34px #3c281421}.card-canvas{box-shadow:0 12px 44px #3c28141f}.ok-box{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0;padding:10px 14px;border-radius:10px;margin:10px 0}.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin:18px 0 24px}.theme-card{position:relative;text-align:left;padding:0;border:2px solid var(--d-line);border-radius:14px;overflow:hidden;background:#fff;cursor:pointer;transition:border-color .15s,transform .15s,box-shadow .15s}.theme-card:hover{transform:translateY(-2px);box-shadow:0 8px 22px #00000014}.theme-card.on{border-color:var(--blue);box-shadow:0 6px 18px #2563eb2e}.theme-swatches{display:flex;height:64px}.theme-swatches span{flex:1}.theme-meta{padding:12px 14px 14px}.theme-name{font-weight:700;color:var(--d-ink);display:flex;align-items:center;gap:8px}.theme-current{font-size:11px;font-weight:600;color:#047857;background:#ecfdf5;padding:2px 8px;border-radius:999px}.theme-desc{font-size:13px;color:var(--d-mute);margin-top:3px}.theme-check{position:absolute;top:10px;right:10px;background:var(--blue);color:#fff;border-radius:999px;width:26px;height:26px;display:flex;align-items:center;justify-content:center}.theme-actions{display:flex;gap:12px;align-items:center}
