:root{--font-sans:"Microsoft JhengHei", "Microsoft JhengHei UI", "PingFang TC", "Noto Sans TC", sans-serif;--ink:#342528;--muted:#7d6d70;--wine:#7f2036;--wine-dark:#621529;--rose:#dca6ad;--blush:#f2dddc;--paper:#fffaf2;--cream:#f7f0e5;--line:#e6d9ce;--white:#fff;--shadow:0 22px 60px #512b2f24}.account-heading{padding:32px 24px 12px}.account-heading h1{margin:12px 0;font-size:30px}.account-heading>p:last-child{color:var(--muted);line-height:1.7}.account-section{border:1px solid var(--line);background:#fffdf9;border-radius:18px;margin:20px;padding:24px}.account-section h2{margin:0 0 22px;font-size:20px}.account-section input[readonly]{color:var(--muted);background:#f2eee8}.account-dialog-actions{flex-wrap:wrap;gap:12px;margin-top:12px;display:flex}.account-dialog-actions>*{white-space:nowrap;flex:1}.account-success{color:#2d6144;background:#f0f8f3;border:1px solid #c8dfd1;border-radius:10px;margin:0;padding:12px 16px;font-size:14px;line-height:1.7}.support-section>p{font-size:14px;line-height:1.8}.support-section h2{margin-top:10px}.support-email{color:var(--wine);overflow-wrap:anywhere;margin:0 0 16px;font-size:18px;font-weight:700;display:inline-block}.sender-name-field{margin-top:20px}.admin-console{--console-line:#e4e6eb;color:#252a34;background:#f5f6f8;min-height:100svh}.admin-sidebar{z-index:50;color:#e9ecf3;background:#242b36;flex-direction:column;width:236px;padding:36px 20px 24px;display:flex;position:fixed;inset:0 auto 0 0}.console-brand{letter-spacing:-.03em;margin:0 12px 46px;font-size:32px;font-weight:800}.console-brand span{letter-spacing:.16em;color:#aab2c2;margin-top:6px;font-size:10px;font-weight:500;display:block}.sidebar-label{color:#aab2c2;letter-spacing:.08em;margin:0 14px 14px;font-size:12px}.admin-sidebar nav{gap:8px;display:grid}.admin-sidebar nav a{color:#cbd1dc;border-radius:9px;align-items:center;gap:14px;padding:15px 14px;font-size:15px;display:flex}.admin-sidebar nav a>span{color:#8e9bb0;font-size:12px}.admin-sidebar nav a:hover{background:#303947}.admin-sidebar nav a[aria-current=page]{color:#682137;background:#e8dbdd;font-weight:700}.admin-sidebar nav a[aria-current=page]>span{color:#9e5d6e}.admin-sidebar-footer{overflow-wrap:anywhere;border-top:1px solid #414957;gap:7px;margin:auto 12px 0;padding-top:28px;font-size:14px;display:grid}.admin-sidebar-footer>span{color:#aab2c2;margin-bottom:14px;font-size:12px}.admin-sidebar-footer>a{color:#b9c3d4;padding:8px 0}.admin-sidebar-footer button{text-align:left;color:#e7c0c9;cursor:pointer;background:0 0;border:0;padding:10px 0}.admin-content{max-width:1800px;margin-left:236px;padding:40px clamp(20px,3vw,48px) 60px}.console-page-heading{justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px;display:flex}.console-page-heading h1{margin:10px 0;font-size:30px}.console-page-heading p:last-child{color:#737b88;margin:0;font-size:14px;line-height:1.7}.console-page-heading .eyebrow{letter-spacing:.14em;font-size:11px}.console-page-heading>button{flex-shrink:0}.admin-console .admin-summary{gap:16px;margin-bottom:28px}.admin-console .admin-summary>div{border-color:var(--console-line);background:#fff;border-radius:12px;box-shadow:0 2px 3px #20293803}.admin-console .admin-summary strong{color:#303b4c;font-size:32px}.admin-console .secondary-button{color:#454e5c;background:#fff;border:1px solid #d8dce4;border-radius:8px;padding:10px 14px;font-size:14px;font-weight:500}.admin-console .primary-button{box-shadow:none;letter-spacing:0;border-radius:9px;padding:12px 20px;font-size:14px}.admin-console button:disabled{opacity:.45;cursor:not-allowed}.data-panel{border:1px solid var(--console-line);background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 3px 12px #2a344505}.data-panel>.form-error,.data-panel>.account-success{margin:0 20px 16px}.data-toolbar{flex-wrap:wrap;align-items:center;gap:14px;padding:20px;display:flex}.data-search{flex:1;gap:8px;min-width:250px;display:flex}.data-search>button{white-space:nowrap;flex-shrink:0}.data-toolbar input{width:100%;min-width:0}.data-toolbar input,.data-toolbar select{color:#414955;background:#fff;border:1px solid #dce0e7;border-radius:8px;padding:10px 12px;font-size:14px}.data-toolbar>label{color:#6c7582;align-items:center;gap:8px;font-size:13px;display:flex}.data-toolbar>strong{margin-right:auto;font-size:16px}.data-table-scroll{overscroll-behavior-x:contain;overflow-x:auto}.data-table{border-collapse:collapse;text-align:left;width:100%;font-size:14px}.data-table th{border-block:1px solid var(--console-line);color:#727a87;white-space:nowrap;background:#f8f9fb;padding:15px 18px;font-size:13px;font-weight:500}.data-table th button{color:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:0;padding:0}.data-table th button span{color:#929ba9;font-size:12px}.data-table th[aria-sort=ascending] button,.data-table th[aria-sort=descending] button{color:#7f2036;font-weight:700}.data-table td{white-space:nowrap;border-bottom:1px solid #eef0f4;padding:18px}.data-panel[aria-label=會員資料表] .data-table{min-width:900px}.data-panel[aria-label=會員資料表] .data-table th,.data-panel[aria-label=會員資料表] .data-table td{padding:16px 12px}.data-panel[aria-label=會員資料表] .data-table td:nth-child(2){white-space:normal;overflow-wrap:anywhere;min-width:100px;max-width:150px}.data-panel[aria-label=會員資料表] .data-table td:nth-child(3){white-space:normal;overflow-wrap:anywhere;min-width:170px;max-width:220px}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover td{background:#fcfbfb}.data-table .numeric-cell{font-variant-numeric:tabular-nums;text-align:center}.muted-cell{color:#9098a3}.data-table .table-actions-cell{background:#fff;position:sticky;right:0;box-shadow:-4px 0 6px #313b4a04}.data-table th.table-actions-cell{background:#f8f9fb}.table-actions{gap:8px;display:flex}.table-actions button{cursor:pointer;color:#42566e;white-space:nowrap;background:#fff;border:1px solid #dce1e9;border-radius:6px;padding:7px 10px;font-size:13px}.table-actions .danger-text{color:#a03c4f;border-color:#efd9de}.status-badge{border-radius:6px;padding:5px 10px;font-size:12px;font-weight:500;display:inline-flex}.status-badge.active{color:#388457;background:#edf7f0}.status-badge.frozen{color:#a46624;background:#fdf0e5}.status-badge.current{color:#4c6d9b;background:#edf2fa;margin-left:12px}.data-footer{border-top:1px solid var(--console-line);justify-content:space-between;align-items:center;gap:16px;padding:16px 20px;display:flex}.data-footer p{color:#7d8592;margin:0;font-size:13px}.data-pagination{white-space:nowrap;align-items:center;gap:14px;font-size:13px;display:flex}.data-pagination button{cursor:pointer;background:#fff;border:1px solid #dce1e9;border-radius:6px;padding:7px 10px}.data-table .table-empty{text-align:center;color:#818a96;height:160px}.console-footnote{color:#858c97;margin:18px 4px;font-size:12px;line-height:1.8}.console-callout{background:#edf0f6;border:1px solid #dfe4ee;border-radius:12px;margin-bottom:24px;padding:18px 22px}.console-callout strong{color:#4a5e7c;font-size:14px}.console-callout p{color:#6e7d92;margin:8px 0 0;font-size:13px;line-height:1.8}.admin-mobile-header{display:none}@media (max-width:760px){.admin-sidebar{z-index:45;width:100%;padding:16px;display:none;position:relative}.admin-sidebar.is-open{display:flex}.console-brand{display:none}.admin-sidebar-footer{margin:18px 14px 0;padding-top:16px}.admin-content{margin-left:0;padding:26px 16px 40px}.admin-mobile-header{z-index:50;color:#fff;background:#242b36;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex;position:sticky;top:0}.admin-mobile-header>a{font-size:16px;font-weight:700}.admin-mobile-header small{color:#bec6d5;margin-left:6px;font-size:12px}.console-page-heading{flex-wrap:wrap;align-items:flex-start;gap:14px}.console-page-heading h1{font-size:26px}.admin-console .admin-summary{gap:10px}.admin-console .admin-summary>div{padding:16px}.admin-console .admin-summary strong{font-size:28px}.data-toolbar{gap:12px;padding:16px}.data-search{flex-basis:100%;min-width:0}.data-toolbar input,.data-toolbar select{font-size:16px}.data-footer{flex-wrap:wrap;padding:16px}.data-pagination{margin-left:auto}.account-section{margin:16px;padding:20px}}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--cream);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline-offset:3px;outline:3px solid #7f203638}.brand{color:var(--wine);letter-spacing:.1em;align-items:center;gap:9px;font-weight:750;display:inline-flex}.brand-mark,.mini-seal,.tiny-brand-seal{aspect-ratio:1;background:var(--wine);color:#fff;width:35px;font-family:var(--font-sans);letter-spacing:0;border-radius:50%;place-items:center;font-weight:700;display:grid;box-shadow:inset 0 0 0 2px #ffffff40}.primary-button{background:var(--wine);color:#fff;letter-spacing:.08em;cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;gap:22px;padding:15px 24px;font-weight:700;transition:transform .2s,background .2s,box-shadow .2s;display:inline-flex;box-shadow:0 12px 26px #7f203638}.primary-button:hover{background:var(--wine-dark);transform:translateY(-2px);box-shadow:0 16px 32px #7f203642}.primary-button:disabled{opacity:.6;cursor:wait;transform:none}.full-button{width:100%}.eyebrow{color:var(--wine);letter-spacing:.22em;margin:0;font-size:14px;font-weight:800}.form-error{color:#8c2437;background:#fff0f1;border:1px solid #efc8cd;border-radius:10px;margin:0;padding:10px 12px;font-size:14px;line-height:1.5}.landing-shell{background:radial-gradient(circle at 75% 34%, #f3dddd 0, transparent 28%), var(--cream);min-height:100vh;overflow:hidden}.landing-nav{justify-content:space-between;align-items:center;width:min(1160px,100% - 48px);height:92px;margin:auto;display:flex}.landing-nav .text-link{color:var(--wine);border-bottom:1px solid;padding:5px 1px;font-size:14px}.hero{grid-template-columns:.92fr 1.08fr;align-items:center;gap:60px;width:min(1160px,100% - 48px);min-height:610px;margin:auto;display:grid}.hero-copy h1,.dashboard-intro h1,.create-heading h1{font-family:var(--font-sans);letter-spacing:.03em;margin:18px 0;font-size:clamp(46px,5.7vw,76px);font-weight:700;line-height:1.23}.hero-description{max-width:465px;color:var(--muted);font-family:var(--font-sans);margin:0 0 30px;font-size:17px;line-height:1.9}.hero-cta{min-width:192px}.hero-note{color:#99888a;margin:16px 0 0 8px;font-size:14px}.hero-visual{perspective:1000px;place-items:center;height:540px;display:grid;position:relative}.hero-visual:before{content:"";background:#ffffff6b;border:1px solid #ffffff9e;border-radius:50%;width:470px;height:470px;position:absolute}.hero-letter{z-index:2;background:var(--paper);width:min(390px,72%);height:360px;font-family:var(--font-sans);border-radius:4px;flex-direction:column;padding:56px 42px;display:flex;position:absolute;top:48px;transform:rotate(-3deg);box-shadow:0 26px 55px #50292d29}.hero-letter:before,.hero-letter:after{content:"";pointer-events:none;border:1px solid #e7d8c9;position:absolute;inset:12px}.hero-letter:after{border-color:#e7d8c973;inset:17px}.hero-letter span{color:var(--wine);letter-spacing:.08em;font-size:14px}.hero-letter strong{margin:46px 0 auto;font-size:24px;font-weight:600;line-height:1.65}.hero-letter i{text-align:right;color:var(--muted);font-size:14px}.hero-envelope{z-index:3;aspect-ratio:1.65;filter:drop-shadow(0 25px 25px #582f332e);width:min(500px,90%);position:absolute;bottom:50px}.hero-envelope-front{clip-path:polygon(0 15%,50% 70%,100% 15%,100% 100%,0 100%);background:#e4bfc0;border-radius:5px 5px 12px 12px;position:absolute;inset:0;overflow:hidden}.hero-envelope-front:after{content:"";background:linear-gradient(145deg,#0000 48%,#a75e6529 49%),linear-gradient(215deg,#0000 48%,#ffffff38 49%);position:absolute;inset:0}.hero-envelope-flap{z-index:2;clip-path:polygon(0 0,100% 0,50% 100%);background:#edced0;height:57%;position:absolute;top:0;left:0;right:0}.wax-seal{z-index:5;aspect-ratio:1;background:var(--wine);color:#fff;width:66px;font-family:var(--font-sans);border-radius:46% 52% 47% 55%;place-items:center;font-size:23px;display:grid;position:absolute;top:45%;left:50%;transform:translate(-50%,-50%)rotate(5deg);box-shadow:inset 0 0 0 5px #ffffff14,0 5px 10px #531b2840}.floating-heart{z-index:5;color:#bb6271;animation:4s ease-in-out infinite float-heart;position:absolute}.heart-one{font-size:17px;top:42px;right:72px}.heart-two{font-size:14px;animation-delay:-1.4s;top:138px;left:40px}.heart-three{font-size:14px;animation-delay:-2.7s;bottom:160px;right:22px}@keyframes float-heart{50%{transform:translateY(-14px)rotate(8deg)}}.feature-strip{border-top:1px solid #ded0c5;grid-template-columns:repeat(3,1fr);width:min(1160px,100% - 48px);margin:20px auto 60px;padding:26px 0;display:grid}.feature-strip div{border-right:1px solid #ded0c5;grid-template-columns:35px 1fr;gap:2px 14px;padding:0 30px;display:grid}.feature-strip div:last-child{border:0}.feature-strip span{color:var(--rose);font-family:var(--font-sans);grid-row:1/3;font-size:14px}.feature-strip strong{font-family:var(--font-sans)}.feature-strip small{color:var(--muted);margin-top:4px}.auth-page{background:radial-gradient(circle at 14% 18%, #efd6d6, transparent 25%), radial-gradient(circle at 88% 76%, #ead3d0, transparent 22%), var(--cream);place-items:center;min-height:100vh;padding:80px 20px 40px;display:grid;position:relative;overflow:hidden}.back-link{color:var(--wine);font-size:14px;position:absolute;top:30px;left:max(24px,50% - 260px)}.auth-panel{z-index:2;width:min(460px,100%);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffaf3f0;border:1px solid #fffc;border-radius:28px;padding:26px 42px 38px;position:relative}.auth-tabs{background:#eee4da;border-radius:999px;grid-template-columns:1fr 1fr;margin:-8px auto 28px;padding:4px;display:grid}.auth-tabs button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:10px;font-size:14px}.auth-tabs button.active{color:var(--wine);background:#fff;font-weight:700;box-shadow:0 3px 10px #492a2b14}.auth-heading{text-align:center}.mini-seal{width:49px;margin:auto;font-size:18px}.auth-heading h1{font-family:var(--font-sans);margin:18px 0 8px;font-size:31px}.auth-heading p{color:var(--muted);margin:0 0 28px;font-size:14px}.auth-form{gap:16px;display:grid}.auth-form label,.password-dialog label{gap:7px;display:grid}.auth-form label span,.password-dialog label span{color:#66585a;font-size:14px;font-weight:700}.auth-form input,.auth-form select,.password-dialog input{border:1px solid var(--line);width:100%;color:var(--ink);background:#fffc;border-radius:12px;outline:none;padding:13px 14px;transition:border .2s,box-shadow .2s}.auth-form input:focus,.auth-form select:focus,.password-dialog input:focus{border-color:var(--rose);box-shadow:0 0 0 4px #dca6ad26}.auth-switch{color:var(--muted);text-align:center;margin:20px 0 0;font-size:14px}.auth-switch button{color:var(--wine);cursor:pointer;background:0 0;border:0;padding:3px 5px;font-weight:700}.auth-decoration span{color:#7f203624;font-size:24px;position:absolute}.auth-decoration span:first-child{top:14%;left:18%}.auth-decoration span:nth-child(2){font-size:42px;bottom:12%;right:17%}.auth-decoration span:nth-child(3){font-size:14px;top:32%;right:9%}.loading-panel{min-height:500px;color:var(--muted);place-items:center;display:grid}.app-page{background:#fbf7f0;width:min(560px,100%);min-height:100vh;margin:auto;padding-bottom:100px;box-shadow:0 0 60px #46282a14}.app-header{z-index:30;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fbf7f0e6;border-bottom:1px solid #eadfd5;align-items:center;height:72px;padding:0 22px;display:flex;position:sticky;top:0}.app-brand{margin-right:auto}.app-header>p{color:var(--muted);margin:0 12px 0 auto;font-size:14px}.small-link-button{color:var(--wine);cursor:pointer;background:0 0;border:0;padding:8px;font-size:14px}.icon-button{border:1px solid var(--line);width:38px;height:38px;color:var(--wine);background:#fff;border-radius:50%;place-items:center;font-size:18px;display:grid}.header-spacer{width:38px;margin-left:auto}.dashboard-intro{background:linear-gradient(155deg,#fbf7f0 38%,#f0dbda);padding:38px 24px 30px}.dashboard-intro h1{margin:14px 0 28px;font-size:39px}.stats-row{gap:34px;display:flex}.stats-row div{align-items:baseline;gap:7px;display:flex}.stats-row strong{font:700 28px/1 var(--font-sans);color:var(--wine)}.stats-row span{color:var(--muted);font-size:14px}.letter-list-section{padding:27px 20px 20px}.section-heading{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.section-heading h2{font:700 20px var(--font-sans);margin:0}.section-heading a{color:var(--wine);font-size:14px;font-weight:700}.letter-list{gap:13px;display:grid}.letter-list-card{background:var(--white);border:1px solid #ebdfd5;border-radius:18px;padding:16px;box-shadow:0 7px 24px #482b2c0d}.letter-card-top{grid-template-columns:43px 1fr auto;align-items:center;gap:13px;display:grid}.letter-stamp{aspect-ratio:1;border:1px dashed var(--rose);width:43px;color:var(--wine);font:700 17px var(--font-sans);background:#fff7f5;border-radius:50%;place-items:center;display:grid}.letter-card-top p{color:var(--wine);margin:0 0 3px;font-size:14px}.letter-card-top h3{font:700 16px var(--font-sans);white-space:nowrap;text-overflow:ellipsis;max-width:285px;margin:0;overflow:hidden}.letter-chevron{color:#b6a4a4;font-size:25px}.letter-card-meta{color:#8c7a7c;gap:10px;margin:14px 0 12px 56px;font-size:14px;display:flex}.letter-card-meta time{margin-left:auto}.letter-card-actions{border-top:1px solid #f0e7df;justify-content:flex-end;gap:8px;margin-left:56px;padding-top:12px;display:flex}.letter-card-actions a,.letter-card-actions button{color:var(--wine);cursor:pointer;background:snow;border:1px solid #ead8d8;border-radius:999px;padding:7px 12px;font-size:14px}.list-message{text-align:center;color:var(--muted);padding:34px 10px;font-size:14px}.loading-dot{aspect-ratio:1;background:var(--wine);border-radius:50%;width:8px;margin-right:8px;animation:1s infinite pulse;display:inline-block}.error-message{color:var(--wine)}@keyframes pulse{50%{opacity:.25;transform:scale(.8)}}.empty-state{text-align:center;border:1px dashed #dac6c1;border-radius:22px;padding:42px 20px}.empty-envelope{clip-path:polygon(0 10%,50% 60%,100% 10%,100% 100%,0 100%);background:#efd4d5;place-items:end center;width:76px;height:53px;margin:0 auto 20px;display:grid}.empty-envelope span{color:var(--wine);font-family:var(--font-sans);margin-bottom:6px}.empty-state h3{font-family:var(--font-sans);margin:0 0 8px}.empty-state p{color:var(--muted);margin:0 0 20px;font-size:14px}.empty-state .primary-button{padding:12px 18px;font-size:14px}.bottom-nav{z-index:40;width:min(560px,100%);height:75px;padding:8px 20px max(8px, env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffcf7f0;border-top:1px solid #e8dcd3;grid-template-columns:repeat(3,1fr);display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.bottom-nav a{color:#a39192;flex-direction:column;align-items:center;gap:3px;display:flex}.bottom-nav a>span{font-size:21px;line-height:28px}.bottom-nav small{font-size:14px}.bottom-nav a.active{color:var(--wine);font-weight:700}.bottom-nav .compose-nav>span{background:var(--wine);color:#fff;border-radius:50%;place-items:center;width:31px;display:grid}.create-heading{background:linear-gradient(150deg,#fbf7f0,#f1dedd);padding:34px 24px 24px}.create-heading h1{margin:12px 0;font-size:37px}.create-heading>p:last-child{color:var(--muted);font:14px/1.8 var(--font-sans);margin:0}.create-form{padding:5px 20px 28px}.form-section{border-bottom:1px solid #e7dbd1;padding:28px 0}.step-label{color:var(--wine);letter-spacing:.12em;margin-bottom:17px;font-size:14px;font-weight:800;display:block}.line-input-label{align-items:baseline;gap:12px;margin-bottom:18px;display:flex}.line-input-label span{color:var(--wine);font:italic 20px var(--font-sans)}.line-input-label input{min-width:0;font:20px var(--font-sans);background:0 0;border:0;border-bottom:1px solid #ccb8b5;outline:0;flex:1;padding:10px 2px}.line-input-label input:focus{border-color:var(--wine)}.floating-label{gap:7px;display:grid}.floating-label span{color:var(--muted);font-size:14px;font-weight:700}.floating-label input{border:1px solid var(--line);background:#fff;border-radius:12px;outline:none;width:100%;padding:13px 14px}.floating-label input:focus{border-color:var(--rose);box-shadow:0 0 0 4px #dca6ad26}.editor-toolbar{background:#eee5dc;border-radius:12px;grid-template-columns:1fr 1fr .72fr .72fr;gap:5px;margin-bottom:12px;padding:7px;display:grid}.editor-toolbar label,.editor-toolbar button{height:46px;color:var(--muted);background:#ffffff8c;border:0;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex}.editor-toolbar label span,.editor-toolbar button span{font-size:14px}.editor-toolbar select{color:var(--ink);text-align:center;background:0 0;border:0;outline:none;font-size:14px;font-weight:700}.editor-toolbar button{cursor:pointer}.editor-toolbar button strong{font-family:var(--font-sans);font-size:16px}.editor-toolbar button.toolbar-active{color:#fff;background:var(--wine)}.color-control input{background:0 0;border:1px solid #fff;border-radius:50%;width:19px;height:19px;padding:0;overflow:hidden}.color-control input::-webkit-color-swatch-wrapper{padding:0}.color-control input::-webkit-color-swatch{border:0;border-radius:50%}.paper-editor{background:var(--paper);border-radius:3px;min-height:355px;padding:25px 22px 18px;position:relative;overflow:hidden;box-shadow:0 12px 34px #50312f1a}.paper-editor:before{content:"";pointer-events:none;border:1px solid #eadccf;position:absolute;inset:9px}.paper-date{z-index:1;text-align:right;color:#ad9995;font:14px var(--font-sans);margin-bottom:18px;display:block;position:relative}.paper-editor textarea{z-index:1;resize:vertical;width:100%;min-height:270px;font-family:var(--font-sans);white-space:pre-wrap;background:0 0;border:0;outline:0;position:relative}.paper-editor textarea::placeholder{color:#bcaeaa}.character-count{z-index:2;color:#b4a4a1;font-size:14px;position:absolute;bottom:14px;right:22px}.image-dropzone{cursor:pointer;background:#fffaf5;border:1px dashed #d4b9b5;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;height:210px;display:flex;position:relative;overflow:hidden}.image-dropzone input{opacity:0;pointer-events:none;position:absolute}.upload-icon{aspect-ratio:1;width:42px;color:var(--wine);border:1px solid #d9bfc0;border-radius:50%;place-items:center;margin-bottom:10px;font-size:20px;display:grid}.image-dropzone strong{font-size:14px}.image-dropzone small{color:var(--muted);margin-top:6px;font-size:14px}.image-dropzone.has-image img{object-fit:cover}.change-image{z-index:2;color:#fff;background:#321e20b3;border-radius:999px;padding:7px 11px;font-size:14px;position:absolute;bottom:12px;right:12px}.password-section>div>p{color:var(--muted);margin:-8px 0 17px;font-size:14px;line-height:1.7}.password-field input{background:#fffaf5}.live-preview-section{padding:28px 0 8px}.mini-card-preview{background:var(--paper);font-family:var(--font-sans);border-radius:4px;padding:23px;overflow:hidden;box-shadow:0 12px 30px #512e301c}.mini-image{height:175px;margin:-9px -9px 22px;position:relative;transform:rotate(-1deg)}.mini-image img{object-fit:cover}.mini-to{color:var(--wine);font-size:14px}.mini-card-preview h3{margin:12px 0;font-size:21px}.mini-content{white-space:pre-wrap;word-break:break-word;min-height:70px}.publish-button{border-radius:14px;width:100%;min-height:55px;margin:20px 0 8px}.sticky-error{margin-top:20px}.success-overlay,.password-overlay{z-index:100;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#3a23269e;place-items:center;padding:22px;display:grid;position:fixed;inset:0}.success-card{background:var(--paper);text-align:center;border-radius:26px;width:min(410px,100%);padding:34px 28px 28px;box-shadow:0 30px 80px #23121659}.success-seal{aspect-ratio:1;background:var(--wine);color:#fff;width:66px;font:23px var(--font-sans);border:5px solid #e8c6c5;border-radius:50%;place-items:center;margin:-65px auto 22px;display:grid}.success-card h2{font:700 28px var(--font-sans);margin:12px 0 10px}.success-card>p:not(.eyebrow){color:var(--muted);font:14px/1.8 var(--font-sans)}.share-link-box{border:1px solid var(--line);background:#fff;border-radius:10px;align-items:center;gap:8px;margin:20px 0 14px;padding:6px 6px 6px 13px;display:flex}.share-link-box span{white-space:nowrap;text-overflow:ellipsis;text-align:left;min-width:0;color:var(--muted);flex:1;font-size:14px;overflow:hidden}.share-link-box button{color:var(--wine);cursor:pointer;background:#f0dddd;border:0;border-radius:7px;padding:8px 10px;font-size:14px}.success-links{color:var(--wine);justify-content:center;gap:22px;margin-top:18px;font-size:14px;text-decoration:underline;display:flex}.letter-experience{background:radial-gradient(circle at 50% 38%,#fff9f2 0,#f4e9df 48%,#ead8d4 100%);flex-direction:column;min-height:100svh;display:flex;position:relative;overflow:hidden}.letter-experience:after{content:"";opacity:.16;pointer-events:none;mix-blend-mode:multiply;background-image:repeating-radial-gradient(circle at 0 0,#0000 0,#74575a 1px,#0000 1.5px);background-size:5px 5px;position:fixed;inset:0}.ambient-glow{filter:blur(10px);background:#ffffff85;border-radius:50%;width:520px;height:520px;position:absolute;top:47%;left:50%;transform:translate(-50%,-50%)}.recipient-header{z-index:5;justify-content:center;align-items:center;gap:9px;height:74px;display:flex;position:relative}.recipient-header p{color:#7e6266;font:14px var(--font-sans);letter-spacing:.14em}.tiny-brand-seal{width:28px;font-size:14px}.envelope-scene{z-index:4;flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:620px;padding:20px 20px 65px;display:flex;position:relative}.envelope-message{text-align:center;margin-bottom:40px;transition:opacity .5s}.envelope-message p{color:var(--wine);font:14px var(--font-sans);letter-spacing:.18em}.envelope-message h1{font:700 clamp(28px, 7vw, 38px) var(--font-sans);letter-spacing:.08em;margin:9px 0 0}.animated-envelope{aspect-ratio:1.5;perspective:900px;filter:drop-shadow(0 30px 22px #542d3133);width:min(390px,88vw);position:relative}.envelope-back{background:#e6bfc0;border-radius:7px 7px 13px 13px;position:absolute;inset:0}.envelope-flap{z-index:5;transform-origin:top;clip-path:polygon(0 0,100% 0,50% 100%);backface-visibility:hidden;background:linear-gradient(#efced0,#e8c1c3);width:100%;height:57%;transition:transform .75s cubic-bezier(.3,.02,.25,1);position:absolute;top:0;left:0}.envelope-pocket{z-index:4;clip-path:polygon(0 10%,50% 64%,100% 10%,100% 100%,0 100%);background:linear-gradient(140deg,#0000 49.5%,#b16b7229 50%),linear-gradient(220deg,#0000 49.5%,#ffffff2e 50%),#e7c1c1;border-radius:7px 7px 13px 13px;position:absolute;inset:0}.inside-letter{z-index:3;background:var(--paper);width:84%;height:90%;font-family:var(--font-sans);border-radius:3px;flex-direction:column;gap:20px;padding:26px;transition:transform .8s cubic-bezier(.2,.7,.2,1) .4s;display:flex;position:absolute;bottom:7%;left:8%}.inside-letter span{color:var(--wine);font-size:14px}.inside-letter strong{font-size:20px}.envelope-seal{z-index:7;aspect-ratio:1;background:var(--wine);color:#fff;width:61px;font:22px var(--font-sans);border:4px double #ffffff30;border-radius:50% 45% 48% 53%;place-items:center;transition:opacity .25s .12s,transform .3s;display:grid;position:absolute;top:47%;left:50%;transform:translate(-50%,-50%);box-shadow:0 7px 12px #4e17234d}.animated-envelope.is-opening .envelope-flap{z-index:2;transform:rotateX(180deg)}.animated-envelope.is-opening .inside-letter{z-index:6;transform:translateY(-70%)}.animated-envelope.is-opening .envelope-seal{opacity:0;transform:translate(-50%,-50%)scale(.7)rotate(20deg)}.open-letter-button{min-width:178px;color:var(--wine);cursor:pointer;background:0 0;border:0;align-items:center;gap:16px;margin-top:45px;display:flex}.open-letter-button span{border-bottom:1px solid var(--wine);font:14px var(--font-sans);letter-spacing:.16em;padding-bottom:7px}.open-letter-button i{aspect-ratio:1;background:var(--wine);color:#fff;border-radius:50%;place-items:center;width:34px;font-style:normal;display:grid}.open-letter-button:disabled{opacity:.55;cursor:wait}.sound-note{color:#a28c8e;letter-spacing:.08em;margin-top:18px;font-size:14px}.heart-particle{z-index:2;color:#882c3d42;animation:6s ease-in-out infinite drift;position:absolute}.particle-1{font-size:14px;top:18%;left:10%}.particle-2{font-size:18px;animation-delay:-2s;top:31%;right:9%}.particle-3{font-size:14px;animation-delay:-4s;bottom:22%;left:14%}.particle-4{font-size:14px;top:12%;right:24%}.particle-5{font-size:14px;animation-delay:-1s;bottom:12%;right:19%}.particle-6{font-size:14px;animation-delay:-3s;top:48%;left:4%}.particle-7{font-size:14px;top:58%;right:4%}.particle-8{font-size:14px;bottom:5%;left:34%}.particle-9{font-size:14px;top:8%;left:30%}.particle-10{font-size:14px;bottom:33%;right:15%}.particle-11{font-size:14px;top:41%;right:22%}.particle-12{font-size:14px;bottom:42%;left:20%}@keyframes drift{50%{opacity:.55;transform:translateY(-18px)rotate(12deg)}}.stage-opening .envelope-message,.stage-opening .open-letter-button,.stage-opening .sound-note{opacity:0;pointer-events:none}.stage-opening .animated-envelope{animation:.5s .75s forwards fade-envelope}@keyframes fade-envelope{to{opacity:0;transform:translateY(-30px)scale(.94)}}.password-dialog{background:var(--paper);text-align:center;border-radius:26px;width:min(390px,100%);padding:36px 28px 28px;position:relative;box-shadow:0 30px 80px #23121659}.dialog-close{color:#a48b8e;cursor:pointer;background:0 0;border:0;font-size:26px;position:absolute;top:12px;right:15px}.lock-mark{aspect-ratio:1;width:55px;color:var(--wine);background:#eed9d8;border-radius:50%;place-items:center;margin:0 auto 18px;font-size:25px;display:grid}.password-dialog h2{font:700 25px var(--font-sans);margin:11px 0 10px}.password-dialog>p:not(.eyebrow):not(.form-error){color:var(--muted);font:14px/1.7 var(--font-sans);margin:0 0 23px}.password-dialog label{text-align:left;margin-bottom:12px}.password-dialog .form-error{margin-bottom:12px}.opened-letter-wrap{z-index:20;background:linear-gradient(#ecd7d5,#f4e9df 15%,#f0e2d9);padding:44px 16px 70px;animation:.7s both reveal-letter;position:absolute;inset:0;overflow-y:auto}.opened-letter{background:var(--paper);width:min(500px,100%);min-height:calc(100svh - 100px);font-family:var(--font-sans);margin:auto;padding:32px 30px 48px;position:relative;overflow:hidden;box-shadow:0 25px 60px #4b252a33}.opened-letter:before{content:"";pointer-events:none;border:1px solid #eadbcd;position:absolute;inset:11px}.opened-letter:after{content:"";width:170px;height:170px;box-shadow:inset 0 0 0 12px var(--paper), inset 0 0 0 13px #7f20361a;border:1px solid #7f20361a;border-radius:50%;position:absolute;bottom:-70px;right:-60px}.letter-paper-header{color:#a18b87;letter-spacing:.13em;justify-content:space-between;align-items:center;font-size:14px;display:flex}.paper-brand{color:var(--wine);font-weight:700}.opened-image{background:#fff;height:min(310px,65vw);margin:30px 5px 34px;padding:8px;position:relative;transform:rotate(-1.5deg);box-shadow:0 9px 22px #4b282b26}.opened-image img{object-fit:cover;padding:7px}.photo-tape{z-index:3;background:#e4cfafad;width:75px;height:24px;position:absolute;top:-13px;left:50%;transform:translate(-50%)rotate(1deg)}.opened-to{color:var(--wine);letter-spacing:.08em;margin:34px 0 9px;font-size:14px}.opened-letter h1{margin:0 0 27px;font-size:clamp(25px,7vw,33px);line-height:1.4}.opened-content{white-space:pre-wrap;word-break:break-word;min-height:160px}.opened-signature{text-align:right;width:fit-content;color:var(--muted);flex-direction:column;margin:44px 4px 20px auto;font-size:14px;display:flex}.opened-signature strong{color:var(--ink);margin-top:8px;font-size:17px}.letter-footer-mark{z-index:2;aspect-ratio:1;background:var(--wine);color:#fff;border-radius:50%;place-items:center;width:38px;margin:38px auto 0;font-size:14px;display:grid;position:relative}.letterly-footer{text-align:center;color:#92797c;letter-spacing:.08em;margin:22px 0 0;font-size:14px}.opened-confetti span{z-index:25;color:var(--wine);animation:1.5s both confetti;position:fixed}.opened-confetti span:first-child{top:18%;left:12%}.opened-confetti span:nth-child(2){animation-delay:.15s;top:10%;right:14%}.opened-confetti span:nth-child(3){animation-delay:.3s;top:62%;left:21%}.opened-confetti span:nth-child(4){animation-delay:.45s;top:53%;right:10%}.opened-confetti span:nth-child(5){animation-delay:.2s;top:4%;left:47%}@keyframes reveal-letter{0%{opacity:0;transform:scale(.98)}}@keyframes confetti{0%{opacity:0;transform:translateY(-25px)scale(.4)rotate(0)}45%{opacity:.7}to{opacity:0;transform:translateY(75px)scale(1)rotate(60deg)}}@media (max-width:720px){.landing-nav{width:calc(100% - 36px);height:72px}.hero{text-align:center;grid-template-columns:1fr;gap:16px;width:100%;min-height:auto;padding:28px 20px 48px}.hero-copy{flex-direction:column;align-items:center;display:flex}.hero-copy h1{font-size:clamp(39px,12vw,54px)}.hero-description{max-width:355px;font-size:15px}.hero-note{margin-left:0}.hero-visual{order:-1;height:335px}.hero-visual:before{width:310px;height:310px}.hero-letter{width:245px;height:240px;padding:34px 27px;top:18px}.hero-letter strong{margin:25px 0 auto;font-size:16px}.hero-letter i{font-size:14px}.hero-envelope{width:320px;bottom:24px}.wax-seal{width:47px;font-size:16px}.heart-one{top:23px;right:16px}.heart-two{top:107px;left:15px}.feature-strip{grid-template-columns:1fr;width:calc(100% - 40px);margin-top:0}.feature-strip div{border-bottom:1px solid #ded0c5;border-right:0;padding:18px 10px}.auth-panel{border-radius:22px;padding:24px 22px 30px}.back-link{left:22px}.auth-heading h1{font-size:27px}}@media (max-width:390px){.app-header{padding-inline:16px}.dashboard-intro,.create-heading{padding-inline:20px}.dashboard-intro h1,.create-heading h1{font-size:34px}.letter-list-section,.create-form{padding-inline:16px}.letter-card-top h3{max-width:205px}.letter-card-meta,.letter-card-actions{margin-left:0}.editor-toolbar{grid-template-columns:repeat(4,1fr)}.opened-letter{padding-inline:25px}.animated-envelope{width:92vw}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.editor-help{color:var(--muted);font:14px/1.7 var(--font-sans);margin:-7px 0 12px}.editor-help.sender-name-help,.editor-help.schedule-help{margin:14px 0 0;line-height:1.9}.editor-help.spaced-help{margin:16px 0 12px;line-height:1.9}.schedule-section h2{margin-top:0}.schedule-section input:disabled{color:#75696c;opacity:1;cursor:not-allowed;background:#eee9e3;border-color:#ded4cb;min-width:0;max-width:100%;min-height:48px}.global-style-toolbar{grid-template-columns:repeat(2,1fr)}.paper-editor{padding-bottom:45px}.line-editor-list{z-index:1;gap:13px;display:grid;position:relative}.line-editor-item{border-bottom:1px solid #eadfd4;padding-bottom:9px}.line-editor-controls{color:#ad9995;align-items:center;gap:6px;min-height:30px;margin-bottom:3px;font-size:14px;display:flex}.line-editor-controls>span{letter-spacing:.08em;margin-right:auto}.line-editor-controls select{height:27px;color:var(--wine);background:#ffffffad;border:1px solid #e6d8cc;border-radius:7px;outline:none;padding:0 22px 0 8px;font-size:14px}.line-editor-controls button{width:28px;height:27px;color:var(--muted);cursor:pointer;background:#ffffffad;border:1px solid #e6d8cc;border-radius:7px}.line-editor-controls .line-bold-active{border-color:var(--wine);background:var(--wine);color:#fff}.line-editor-controls .remove-line-button{font-size:17px;line-height:1}.line-editor-controls .remove-line-button:disabled{opacity:.3;cursor:default}.paper-editor .line-editor-item textarea{field-sizing:content;resize:none;width:100%;min-height:48px;font-family:var(--font-sans);white-space:pre-wrap;word-break:break-word;background:0 0;border:0;outline:0;padding:7px 2px;overflow:hidden}.add-line-button{min-height:40px;color:var(--wine);font:14px var(--font-sans);cursor:pointer;background:#ffffff6b;border:1px dashed #d9c7ba;border-radius:10px}.add-line-button span{margin-right:4px;font-size:15px}.character-count.over-limit{color:#a92e45;font-weight:700}.mini-content p,.opened-content p{min-height:1em;margin:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.smile-seal span{font-family:var(--font-sans);font-weight:400;line-height:1;display:block;transform:translateY(-1px)rotate(-8deg)}.wax-seal.smile-seal span{font-size:31px}.envelope-seal.smile-seal span{font-size:32px}.success-seal.smile-seal span{font-size:36px}.letter-footer-mark.smile-seal span{font-size:22px}@media (max-width:390px){.global-style-toolbar{grid-template-columns:repeat(2,1fr)}.paper-editor{padding-inline:18px}}small{font-size:14px}.auth-form input:disabled{opacity:.65;cursor:not-allowed;background:#eee8e2}.auth-form button:disabled{cursor:not-allowed}.auth-tabs button{overflow-wrap:anywhere}.rich-text-toolbar{flex-wrap:wrap}.rich-block-toolbar{background:#faf4ec;border-bottom:1px solid #e7dbd1;flex-wrap:wrap;gap:8px;padding:10px;display:flex}.rich-block-toolbar button{min-height:40px;color:var(--wine);cursor:pointer;background:#fffdf8;border:1px solid #dfd0c4;border-radius:8px;padding:6px 10px;font-size:14px}.rich-block-toolbar button:disabled{opacity:.5;cursor:not-allowed}.letter-sticky-note{overflow-wrap:anywhere;background:#fff0c7;border:1px solid #ead8ab;border-radius:2px 2px 14px;margin:24px 0;padding:25px 22px 22px;position:relative;box-shadow:2px 7px 12px #5b493712}.letter-sticky-note:before{content:"";pointer-events:none;background:#decab7a6;width:46px;height:17px;position:absolute;top:-8px;left:calc(50% - 23px);transform:rotate(-3deg)}.letter-sticky-note:nth-of-type(2n){background:#f3e3e7;border-color:#e4ccd2}.letter-sticky-note p{min-height:1em;margin:0}.letter-sticky-note.ProseMirror-selectednode{outline:2px solid var(--wine);outline-offset:4px}.letter-divider,.rich-text-surface hr{border:0;border-top:1px solid #bfa99a;height:0;margin:26px 0;display:block}.rich-text-surface hr.ProseMirror-selectednode{border-top:2px solid var(--wine)}.poll-latest{border-left:3px solid var(--wine);overflow-wrap:anywhere;background:#fbf1ed;padding:12px;font-size:14px;line-height:1.7}@media (max-width:390px){.letter-card-meta,.letter-card-actions{flex-wrap:wrap;margin-left:0}.section-heading{flex-wrap:wrap;gap:8px}.letter-sticky-note{padding-inline:16px}.editor-footer-row{flex-wrap:wrap;gap:10px}}.rich-text-editor{background:var(--paper);border:1px solid #e1d4c8;border-radius:16px;overflow:visible;box-shadow:0 12px 34px #50312f14}.rich-editor-tools{top:var(--editor-toolbar-top,72px);z-index:25;background:#f1e8df;border-radius:16px 16px 0 0;position:sticky;box-shadow:0 4px 9px #50312f14}.rich-editor-tools .rich-text-toolbar{border-radius:16px 16px 0 0}.rich-text-surface{scroll-margin-top:calc(var(--editor-toolbar-top,72px) + 16px + var(--editor-tools-height,116px))}.editable-sticky-note{padding-top:12px}.sticky-note-controls{font:14px/1.4 var(--font-sans);-webkit-user-select:none;user-select:none;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:12px;display:flex}.sticky-note-controls button{color:#68434e;cursor:pointer;background:#fffaf2d9;border:1px solid #cdbb9e;border-radius:8px;min-width:40px;min-height:44px;padding:6px 10px}.sticky-note-controls .sticky-note-handle{touch-action:none;cursor:grab;margin-right:auto}.editable-sticky-note.is-dragging{opacity:.5;outline:2px dashed #7f2036}.sticky-note-handle[aria-pressed=true]{cursor:grabbing}.sticky-note-drop-marker{z-index:40;pointer-events:none;background:#7f2036;border-radius:4px;height:4px;position:fixed;box-shadow:0 0 0 2px #fffaf2}.sticky-note-content{min-height:1.8em}.rich-text-editor.is-loading{background:linear-gradient(110deg,#fffaf2 30%,#f6eee5 50%,#fffaf2 70%) 0 0/200% 100%;min-height:360px;animation:1.2s linear infinite editor-loading}@keyframes editor-loading{to{background-position-x:-200%}}.rich-text-toolbar{background:#f1e8df;border-bottom:1px solid #e7dbd1;align-items:center;gap:6px;min-height:54px;padding:8px;display:flex}.rich-text-toolbar select,.rich-text-toolbar button,.rich-color-control{height:36px;color:var(--ink);background:#ffffffc7;border:1px solid #dfd0c4;border-radius:9px}.rich-text-toolbar select{outline:none;min-width:104px;padding:0 28px 0 10px;font-size:14px}.rich-text-toolbar button{cursor:pointer;width:36px;padding:0}.rich-text-toolbar button.is-active{border-color:var(--wine);background:var(--wine);color:#fff}.rich-text-toolbar button:disabled{opacity:.32;cursor:default}.rich-text-toolbar .editor-more-button,.rich-text-toolbar .editor-done-button,.mobile-history-actions{display:none}.toolbar-divider{background:#dacabe;width:1px;height:24px;margin:0 2px}.rich-color-control{cursor:pointer;place-items:center;width:36px;display:grid}.rich-color-control input{cursor:pointer;background:0 0;border:0;border-radius:50%;width:20px;height:20px;padding:0;overflow:hidden}.rich-color-control input::-webkit-color-swatch-wrapper{padding:0}.rich-color-control input::-webkit-color-swatch{border:0;border-radius:50%}.rich-text-surface{min-height:320px;color:var(--ink);font:18px/1.8 var(--font-sans);white-space:pre-wrap;word-break:break-word;outline:none;padding:28px 24px 38px}.rich-text-surface p{min-height:1.8em;margin:0}.rich-text-surface p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;color:#bcaeaa;white-space:pre-line;pointer-events:none;height:0}.editor-footer-row{color:#9c8985;justify-content:space-between;align-items:center;margin-top:10px;font-size:14px;display:flex}.editor-footer-row label{align-items:center;gap:8px;display:flex}.editor-footer-row select{height:32px;color:var(--ink);background:#fff;border:1px solid #dfd0c4;border-radius:8px;padding:0 26px 0 9px;font-size:14px}.editor-footer-row .over-limit{color:#a92e45;font-weight:700}.music-uploader{background:#fffaf5;border:1px solid #e2d4c9;border-radius:16px;margin-top:14px;padding:16px}.music-uploader-heading{align-items:center;gap:12px;display:flex}.music-uploader-heading>div{gap:3px;min-width:0;display:grid}.music-uploader-heading strong{font-size:14px}.music-uploader-heading small{color:var(--muted);font-size:14px;line-height:1.5}.music-note{aspect-ratio:1;width:39px;color:var(--wine);background:#eed9d8;border-radius:50%;flex:none;place-items:center;font-size:20px;display:grid}.music-select-button{width:100%;height:39px;color:var(--wine);cursor:pointer;border:1px dashed #d3b8b5;border-radius:10px;place-items:center;margin-top:13px;font-size:14px;font-weight:700;display:grid}.music-select-button input{opacity:0;pointer-events:none;position:absolute}.music-preview{grid-template-columns:1fr auto;align-items:center;gap:9px;margin-top:14px;display:grid}.music-preview>div{gap:2px;min-width:0;display:grid}.music-preview strong{color:var(--wine);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.music-preview small{color:var(--muted);font-size:14px}.music-preview audio{grid-column:1/-1;width:100%;height:36px}.music-preview button{color:var(--wine);cursor:pointer;background:0 0;border:0;grid-area:1/2;font-size:14px;text-decoration:underline}.mini-music-note{color:var(--wine);margin:18px 0 0;font-size:14px}.background-music-player{background:#fff8f1;border:1px solid #e6d5cb;border-radius:14px;margin:6px 0 28px;padding:14px}.background-music-player>div{align-items:center;gap:10px;display:flex}.background-music-player>div>span{aspect-ratio:1;width:34px;color:var(--wine);background:#eed9d8;border-radius:50%;place-items:center;font-size:17px;display:grid}.background-music-player p{gap:2px;margin:0;display:grid}.background-music-player strong{font-size:14px}.background-music-player small{color:var(--muted);font-size:14px}.background-music-player audio{width:100%;height:36px;margin-top:11px}.rich-document p{min-height:1em;margin:0}.letter-text-link{color:#7f2036;text-underline-offset:.2em;overflow-wrap:anywhere;text-decoration:underline;text-decoration-thickness:1px}.letter-text-link:hover{text-decoration-thickness:2px}.letter-text-link:focus-visible{outline:2px solid var(--wine);outline-offset:3px}.editor-link-dialog{border:1px solid var(--line);background:var(--paper);width:min(430px,100% - 32px);max-height:calc(100svh - 32px);color:var(--ink);box-shadow:var(--shadow);border-radius:18px;padding:24px;overflow-y:auto}.editor-link-dialog::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#34252888}.editor-link-dialog h2{margin:0 0 20px;font-size:22px}.editor-link-dialog label{margin-bottom:8px;font-size:15px;display:block}.editor-link-dialog input{border:1px solid var(--line);border-radius:10px;width:100%;min-height:46px;padding:11px;font-size:16px}.editor-link-dialog .form-error{margin-top:12px}.editor-link-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:20px;display:flex}.editor-link-actions button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:10px;min-height:44px;padding:10px 16px;font-size:15px}.editor-link-actions .link-save-button{background:var(--wine);color:#fff;border-color:var(--wine)}.secondary-button{color:var(--wine);cursor:pointer;font:inherit;background:#fffaf7;border:1px solid #d8b9bd;border-radius:12px;padding:11px 16px;font-size:14px}.secondary-button:disabled,.small-link-button:disabled{opacity:.45;cursor:default}.secondary-button:focus-visible,.poll-choice:focus-within{outline:2px solid var(--wine);outline-offset:3px}.poll-toggle{color:var(--ink);align-items:center;gap:10px;font-size:15px;display:flex}.poll-toggle input,.poll-choice input{width:18px;height:18px;accent-color:var(--wine);flex-shrink:0}.poll-editor-fields{gap:14px;margin-top:20px;display:grid}.poll-editor fieldset{border:0;min-width:0;margin-inline:0;padding:0}.poll-editor fieldset:disabled{opacity:.7}.edit-notice{color:var(--wine);background:#f4e6dc;border-radius:10px;padding:12px 14px;font-size:14px;line-height:1.8}.password-section select{border:1px solid var(--line);width:100%;color:var(--ink);font:inherit;background:#fff;border-radius:10px;padding:12px}.letter-card-actions{flex-wrap:wrap}.letter-card-actions .delete-letter-button{color:#963947;border-color:#e4bfc4}.delete-letter-dialog{border:1px solid var(--line);width:min(440px,100% - 32px);max-height:calc(100svh - 48px);color:var(--ink);background:var(--paper);box-shadow:var(--shadow);border-radius:20px;padding:28px;overflow-y:auto}.delete-letter-dialog::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#34252888}.delete-letter-dialog h2{margin:0 0 20px;font-size:23px}.delete-letter-dialog p{overflow-wrap:anywhere;font-size:15px;line-height:1.8}.delete-letter-name{font-weight:700}.delete-letter-name span{color:var(--muted);font-weight:400;display:block}.delete-dialog-actions{flex-wrap:wrap;gap:12px;margin-top:24px;display:flex}.delete-dialog-actions button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:12px;flex:130px;min-height:46px;padding:10px 14px;font-size:15px}.delete-dialog-actions .confirm-delete-button{color:#fff;background:#8e3040;border-color:#8e3040}.delete-dialog-actions button:disabled{opacity:.6;cursor:wait}.delete-notice{border:1px solid var(--line);background:var(--paper);border-radius:12px;padding:12px 16px;font-size:15px;line-height:1.7}.poll-option-editor{align-items:center;gap:8px;display:flex}.poll-option-editor>label{flex:1;min-width:0}.poll-note{color:var(--muted);font:14px/1.8 var(--font-sans);overflow-wrap:anywhere}.poll-preview{border-top:1px dashed var(--line);overflow-wrap:anywhere;margin-top:24px;padding-top:20px}.poll-preview p{padding:8px 0;font-size:14px}.recipient-poll{z-index:1;border-top:1px dashed #d8b9bd;margin:32px 0 0;padding:24px 0 0;position:relative}.recipient-poll fieldset{border:0;min-width:0;margin:0 0 18px;padding:0}.recipient-poll legend{overflow-wrap:anywhere;margin-bottom:18px;font-size:20px;font-weight:700;line-height:1.6}.poll-choice{border:1px solid var(--line);cursor:pointer;font:14px/1.7 var(--font-sans);overflow-wrap:anywhere;background:#fffdf9;border-radius:12px;align-items:center;gap:12px;margin:10px 0;padding:14px;display:flex}.poll-choice.selected{border-color:var(--wine);background:#f7e8e6}.poll-choice span{min-width:0}.poll-thanks h2{font-size:22px}.poll-thanks p{overflow-wrap:anywhere;font-size:14px;line-height:1.8}.poll-stats{border-top:1px solid var(--line);margin:16px 0;padding-top:14px}.poll-stats summary{color:var(--wine);cursor:pointer;padding:4px 0;font-size:14px;font-weight:700}.poll-stats h4{overflow-wrap:anywhere;font-size:15px;line-height:1.6}.poll-result{margin:14px 0}.poll-result>div{justify-content:space-between;gap:12px;font-size:14px;line-height:1.7;display:flex}.poll-result span{overflow-wrap:anywhere;min-width:0}.poll-result strong{white-space:nowrap;color:var(--wine)}.poll-result meter{appearance:none;background:#ede3de;border:0;border-radius:8px;width:100%;height:12px;margin-top:5px}.poll-result meter::-webkit-meter-bar{background:#ede3de;border:none;border-radius:8px}.poll-result meter::-webkit-meter-optimum-value{background:var(--wine);border-radius:8px}.poll-result meter::-moz-meter-bar{background:var(--wine);border-radius:8px}.letter-card-meta{flex-wrap:wrap}.letter-card-top>div{min-width:0}.letter-card-top h3{max-width:100%}.admin-page{width:min(960px,100%);padding-bottom:40px}.admin-page .app-header{justify-content:space-between}.admin-brand{color:var(--wine);letter-spacing:.08em;font-size:15px;font-weight:800}.admin-brand span{color:var(--muted);margin-left:8px;font-size:14px;font-weight:400;display:inline-block}.admin-summary{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.admin-summary>div{border:1px solid var(--line);background:#ffffffb3;border-radius:16px;gap:12px;padding:20px;display:grid}.admin-summary span{color:var(--muted);font-size:14px}.admin-summary strong{color:var(--wine);font:700 30px/1.2 var(--font-sans);overflow-wrap:anywhere}.admin-search{gap:8px;margin-bottom:12px;display:flex}.admin-search input{border:1px solid var(--line);min-width:0;color:var(--ink);background:#fff;border-radius:12px;flex:1;padding:12px;font-size:16px}.admin-users{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.admin-user{border:1px solid var(--line);background:#fff;border-radius:16px;padding:20px}.admin-user-heading{justify-content:space-between;gap:12px;display:flex}.admin-user-heading>div{min-width:0}.admin-user h3{overflow-wrap:anywhere;margin:0;font-size:17px}.admin-user p{color:var(--muted);overflow-wrap:anywhere;margin:7px 0 0;font-size:14px}.admin-user-heading>span{color:var(--muted);font-size:14px}.admin-user dl{border-block:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:16px 0;display:grid}.admin-user dt{color:var(--muted);font-size:14px}.admin-user dd{color:var(--wine);margin:6px 0 0;font-size:17px}.admin-user small{color:var(--muted);font-size:14px}.admin-pagination{justify-content:space-between;align-items:center;gap:12px;margin-top:24px;display:flex}.admin-pagination span{color:var(--muted);font-size:14px}@media (max-width:600px){.admin-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-summary>div{padding:16px}.admin-users{grid-template-columns:1fr}}@media (max-width:390px){.rich-text-toolbar{gap:5px}.rich-text-toolbar select{min-width:92px}.rich-text-surface{min-height:300px;padding-inline:19px}}@media (max-width:680px),(pointer:coarse) and (max-width:1024px){.create-page[data-mobile-editing=true]>.app-header{visibility:hidden;pointer-events:none;position:static}.create-page[data-mobile-editing=true]>.bottom-nav{display:none}.rich-editor-tools .rich-text-toolbar{grid-template-columns:minmax(56px,1fr) repeat(4,44px);gap:4px;min-height:56px;padding:6px 4px;display:grid}.rich-text-toolbar select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='m1 1 4 4 4-4' fill='none' stroke='%23786770' stroke-width='1.5'/%3E%3C/svg%3E");background-position:right 5px center;background-repeat:no-repeat;background-size:10px 6px;width:100%;min-width:0;height:44px;padding:0 17px 0 6px;font-size:16px}.rich-text-toolbar button,.rich-color-control{width:44px;height:44px}.rich-text-toolbar button strong{font-size:20px}.rich-color-control input{width:28px;height:28px}.rich-text-toolbar .toolbar-divider,.rich-text-toolbar .desktop-history-action{display:none}.rich-text-toolbar .editor-more-button,.rich-text-toolbar .editor-done-button{width:44px;font-size:16px;display:block}.rich-text-toolbar .editor-done-button{color:var(--wine);font-weight:700}.rich-block-toolbar{overscroll-behavior:contain;border:1px solid #dfd0c4;border-radius:0 0 12px 12px;max-height:min(210px,38dvh);display:none;position:absolute;top:100%;left:-1px;right:-1px;overflow-y:auto;box-shadow:0 9px 16px #50312f24}.rich-text-editor[data-tools-expanded=true] .rich-block-toolbar{display:flex}.rich-block-toolbar button{min-height:44px;font-size:16px}.mobile-history-actions{flex-basis:100%;gap:8px;display:flex}.rich-text-surface{padding-top:20px;padding-bottom:28px}.editor-link-dialog{max-height:calc(100dvh - 24px)}}body:has(.success-overlay){overflow:hidden}.success-overlay{overscroll-behavior:contain;padding:max(54px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(22px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));flex-direction:column;align-items:center;display:flex;overflow-y:auto}.success-card{overflow-wrap:anywhere;flex:none;width:100%;min-width:0;max-width:410px;margin-block:auto;padding-inline:clamp(20px,6vw,28px)}.share-link-box{width:100%;min-width:0}.share-link-box button{white-space:nowrap;flex:none;min-height:44px}.success-links{flex-wrap:wrap;gap:10px 22px}.success-links a{justify-content:center;align-items:center;min-height:44px;display:inline-flex}.continue-edit-form{margin-top:20px}.attachment-image-slot{margin-top:22px}.attachment-image-slot>strong{margin-bottom:12px;font-size:16px;display:block}.attachment-image-slot .image-dropzone{min-height:180px}.custom-background-uploader{border:1px solid var(--line);background:#fffdf9;border-radius:16px;margin-top:22px;padding:18px}.plan-upgrade-hint,.current-plan{font-size:14px;line-height:1.8}.plan-upgrade-hint a,.current-plan a{color:var(--wine);text-underline-offset:4px}.app-brand-wordmark{letter-spacing:-.04em;font-size:22px;line-height:1}.app-brand-wordmark small{letter-spacing:.15em;margin-top:5px;font-size:14px;font-weight:500;display:block}.app-brand img{flex-shrink:0}.letter-search{border:1px solid var(--line);background:var(--paper);border-radius:14px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;margin-bottom:20px;padding:16px;display:grid}.letter-search label{min-width:0;color:var(--muted);flex-direction:column;gap:8px;font-size:14px;display:flex}.letter-search .letter-search-title{grid-column:1/-1}.letter-search input{border:1px solid var(--line);width:100%;min-width:0;min-height:44px;color:var(--ink);font:16px var(--font-sans);background:#fff;border-radius:8px;padding:9px}.letter-search>button{grid-column:1/-1;justify-self:end}.letter-search-count{color:var(--muted);font-size:14px}.letter-card-actions{flex-wrap:nowrap;align-items:center;gap:8px;margin-left:0}.letter-card-actions .letter-action-icon{flex:0 0 40px;justify-content:center;align-items:center;width:40px;height:44px;padding:0;display:inline-flex}.letter-card-actions .reset-reading-button{white-space:nowrap;flex-shrink:0;min-height:44px;padding:7px 8px}.letter-card-actions :focus-visible,.letter-search :focus-visible{outline:2px solid var(--wine);outline-offset:3px}.letter-card-actions button:disabled,.letter-search button:disabled{opacity:.5;cursor:not-allowed}@media (max-width:360px){.letter-card-actions{gap:4px}.letter-search{grid-template-columns:minmax(0,1fr);gap:8px;padding:12px}}.site-language-bar{color:#3c5448;background:#fffdf5;border-bottom:1px solid #dde4d7;justify-content:flex-end;min-height:44px;padding:4px clamp(16px,4vw,48px);display:flex}.site-language-bar label{align-items:center;gap:8px;display:inline-flex}.site-language-bar select{min-height:36px;color:inherit;font:inherit;cursor:pointer;background:0 0;border:1px solid #b4c3b5;border-radius:5px;padding:4px 24px 4px 8px;font-size:16px}.site-language-bar select:focus-visible{outline-offset:2px;outline:3px solid #c48c66}html[lang=en] .app-header{flex-wrap:wrap;gap:12px}html[lang=en] .letter-card-actions{flex-wrap:wrap}.auth-mail-actions{flex-wrap:wrap;justify-content:center;gap:12px 24px;margin-top:24px;display:flex}.auth-mail-actions button,.auth-mail-actions a{color:#801e38;font:inherit;text-underline-offset:4px;cursor:pointer;background:0 0;border:0;align-items:center;min-height:44px;font-size:16px;text-decoration:underline;display:inline-flex}.auth-help{color:#756669;overflow-wrap:anywhere;margin:12px 0 4px;font-size:16px;line-height:1.8}.auth-mail-notice{color:#33513a;overflow-wrap:anywhere;background:#f0f6ef;border:1px solid #bfd4c6;border-radius:8px;padding:16px;font-size:16px;line-height:1.8}.auth-panel{min-width:0;max-width:100%}.auth-mail-actions button:disabled{opacity:.5;cursor:wait}
