:root{--ink:#27231f;--muted:#7f776e;--paper:#f4f0e7;--paper-deep:#eae3d6;--cream:#fbf8f1;--red:#c44c3f;--red-dark:#9d392f;--green:#3e6256;--line:#382f2724;--serif:"Songti SC", "STSong", "Noto Serif CJK SC", Georgia, serif;--sans:"Avenir Next", "PingFang SC", "Hiragino Sans GB", sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--ink);background:var(--paper);font-family:var(--sans);margin:0}button,input,select,textarea{font:inherit}button,summary{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}body:before{z-index:20;pointer-events:none;content:"";opacity:.18;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.16'/%3E%3C/svg%3E");position:fixed;inset:0}.app-shell{grid-template-columns:228px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:10;background:#f7f3ebd1;flex-direction:column;height:100vh;padding:34px 26px 24px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;display:flex}.brand-seal{background:var(--red);color:#fff;width:43px;height:43px;font:22px var(--serif);border-radius:3px 12px;place-items:center;display:grid;transform:rotate(-2deg);box-shadow:inset 0 0 0 3px #ffffff2e}.brand strong,.brand small{display:block}.brand strong{font:21px var(--serif);letter-spacing:.16em}.brand small{color:var(--muted);letter-spacing:.2em;margin-top:3px;font-size:10px}.sidebar nav{gap:8px;margin-top:70px;display:grid}.sidebar nav a{color:#766e65;border-radius:4px 14px;align-items:center;gap:13px;padding:11px 13px;font-size:14px;transition:all .2s;display:flex;position:relative}.sidebar nav a:hover{color:var(--red);transform:translate(3px)}.sidebar nav a.active{color:#fff;background:var(--ink)}.sidebar nav a.active:after{content:"";background:#efb861;border-radius:50%;width:4px;height:4px;position:absolute;right:13px}.sidebar-note{border:1px solid var(--line);color:var(--green);background:#ffffff59;border-radius:4px 24px;margin-top:auto;padding:18px 16px}.sidebar-note p{font:15px/1.8 var(--serif);margin:9px 0 0}.sidebar-foot{color:#aaa095;letter-spacing:.2em;margin-top:26px;font-size:9px}main{min-width:0;overflow:hidden}.topbar{justify-content:space-between;align-items:center;max-width:1240px;margin:auto;padding:34px 52px 26px;display:flex}.eyebrow{color:var(--red);letter-spacing:.2em;text-transform:uppercase;font-size:10px;font-weight:700}.topbar h1{font:21px var(--serif);letter-spacing:.03em;margin:7px 0 0}.primary-button,.secondary-button{cursor:pointer;border:0;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:0 18px;transition:all .2s;display:inline-flex}.primary-button{color:#fff;background:var(--red);border-radius:3px 14px;box-shadow:0 7px 18px #9d392f2e}.primary-button:hover{background:var(--red-dark);transform:translateY(-2px);box-shadow:0 10px 23px #9d392f40}.primary-button:disabled,.secondary-button:disabled{cursor:wait;opacity:.6}.secondary-button{border:1px solid var(--line);color:var(--ink);background:0 0;border-radius:3px 12px}.secondary-button:hover{border-color:var(--ink);background:#fff6}.text-button{color:var(--green);cursor:pointer;background:0 0;border:0;padding:5px 0;font-size:13px}.text-button:hover{text-decoration:underline}.hero{isolation:isolate;color:#f9f3e8;background:#3d5d52;grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);min-height:480px;padding:68px clamp(48px,7vw,108px);display:grid;position:relative;overflow:hidden}.hero:before{content:"";z-index:-2;background:radial-gradient(circle at 76% 34%,#fac57029,#0000 23%),linear-gradient(122deg,#0000 0 63%,#ffffff09 63% 64%,#0000 64%);position:absolute;inset:0}.hero:after{content:"岁\a 时";white-space:pre;z-index:-1;color:#ffffff09;font:260px/.72 var(--serif);position:absolute;top:-70px;right:-20px}.hero-kicker{letter-spacing:.32em;color:#efc17e;font-size:10px}.hero-date{font:18px var(--serif);letter-spacing:.15em;color:#ffffffb3;margin:28px 0 8px}.hero h2{font:48px/1.3 var(--serif);letter-spacing:.04em;margin:0}.hero h2 em{color:#f0bc6c;font-style:normal;position:relative}.hero h2 em:after{content:"";background:url("data:image/svg+xml,%3Csvg width='120' height='5' viewBox='0 0 120 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 4 C28 0 77 6 120 1' fill='none' stroke='%23e9aa53' stroke-width='2'/%3E%3C/svg%3E") 50%/100% 100% no-repeat;height:5px;position:absolute;bottom:-4px;left:-2px;right:-6px}.hero-meta{color:#ffffffb8;flex-wrap:wrap;gap:20px;margin-top:30px;font-size:13px;display:flex}.hero-meta span{align-items:center;gap:7px;display:flex}.hero blockquote{color:#ffffffa8;font:15px/1.8 var(--serif);border-left:2px solid #f0bc6c8c;margin:40px 0 0;padding-left:18px}.hero-art{place-items:center;min-height:330px;display:grid;position:relative}.sun-disc{color:#a34838;background:#eebd72;border-radius:50%;place-items:center;width:205px;height:205px;animation:5s ease-in-out infinite float;display:grid;box-shadow:0 0 0 18px #eebd720f,0 35px 90px #14282159}.orbit{border:1px solid #ffffff38;border-radius:50%;position:absolute;transform:rotate(-18deg)}.orbit-one{width:330px;height:205px}.orbit-two{opacity:.5;border-style:dashed;width:390px;height:280px;transform:rotate(17deg)}.star{color:#f4c982;position:absolute}.star-one{font-size:28px;top:50px;right:48px}.star-two{font-size:21px;bottom:46px;left:28px}.stamp{color:#f0bc6c;text-align:center;width:70px;height:70px;font:11px/1.5 var(--serif);letter-spacing:.14em;border:1px solid #f0bc6ca6;border-radius:50%;place-items:center;display:grid;position:absolute;bottom:2px;right:0;transform:rotate(8deg)}@keyframes float{50%{transform:translateY(-8px)rotate(2deg)}}.section-block{max-width:1240px;margin:0 auto;padding:70px 52px 10px;scroll-margin-top:20px}.section-heading{justify-content:space-between;align-items:end;margin-bottom:28px;display:flex}.section-heading>div{align-items:center;gap:14px;display:flex}.section-number{color:var(--red);font:italic 13px Georgia,serif}.section-heading h2{font:28px var(--serif);letter-spacing:.05em;margin:0}.muted{color:var(--muted);font-size:12px}.upcoming-grid{grid-template-columns:repeat(4,1fr);gap:14px;display:grid}.upcoming-card{background:#eee1cc;border:1px solid #46372a1a;min-height:238px;padding:20px;transition:all .25s;position:relative;overflow:hidden}.upcoming-card:after{content:"";border:1px solid #322a231f;border-radius:50%;width:100px;height:100px;position:absolute;bottom:-50px;right:-50px;box-shadow:0 0 0 14px #ffffff1a,0 0 0 28px #322a230a}.upcoming-card:hover{transform:translateY(-5px);box-shadow:0 14px 35px #4e3e301f}.tone-1{background:#dbe1d6}.tone-2{background:#ead6ce}.tone-3{background:#e0ddd3}.card-top{justify-content:space-between;align-items:center;display:flex}.avatar,.mini-avatar{color:#fff;background:var(--red);font:12px var(--serif);border-radius:50%;place-items:center;display:grid}.avatar{width:37px;height:37px}.tone-1 .avatar{background:var(--green)}.tone-2 .avatar{background:#a96050}.tone-3 .avatar{background:#59554e}.day-count{color:#27231f99;font-size:11px}.card-date{align-items:baseline;gap:8px;margin-top:34px;display:flex}.card-date strong{font:46px/.9 Georgia,serif}.card-date span{font:13px var(--serif);text-transform:uppercase}.upcoming-card h3{font:19px var(--serif);margin:23px 0 5px}.upcoming-card p{color:#746b61;margin:0;font-size:11px}.roster{border-top:1px solid var(--line);margin-top:18px}.roster-head{color:var(--muted);justify-content:space-between;align-items:center;padding:18px 14px;font-size:11px;display:flex}.roster-head>div{color:var(--ink);align-items:center;gap:9px;font-size:13px;display:flex}.person-row{border-top:1px solid var(--line);grid-template-columns:42px 1fr 1.4fr 1.7fr auto;align-items:center;gap:14px;min-height:74px;padding:13px 14px;transition:all .15s;display:grid}.person-row:hover{background:#ffffff59}.person-row.disabled{opacity:.48}.mini-avatar{background:var(--ink);width:36px;height:36px}.person-name strong,.person-name span,.person-birthday strong,.person-birthday span{display:block}.person-name strong,.person-birthday strong{font-size:13px}.person-name span,.person-birthday span{color:var(--muted);margin-top:4px;font-size:10px}.person-note{color:#756c63;font:12px var(--serif);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.row-actions{align-items:center;gap:16px;display:flex}.more-menu{position:relative}.more-menu summary{cursor:pointer;list-style:none;display:flex}.more-menu summary::-webkit-details-marker{display:none}.more-menu>div{z-index:4;background:var(--cream);border:1px solid var(--line);width:120px;padding:6px;position:absolute;top:27px;right:0;box-shadow:0 10px 25px #32281e26}.more-menu button{text-align:left;cursor:pointer;background:0 0;border:0;width:100%;padding:8px;font-size:12px}.more-menu button:hover{background:var(--paper-deep)}.more-menu button.danger{color:var(--red-dark)}.reminder-layout{grid-template-columns:1fr 1fr;gap:18px;display:grid}.paper-panel{border:1px solid var(--line);background:#fbf8f1ad;min-height:270px;padding:26px;box-shadow:0 12px 35px #46372a0d}.panel-title{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding-bottom:19px;display:flex}.panel-title>div{align-items:center;gap:9px;display:flex}.panel-title h3{font:17px var(--serif);margin:0}.panel-title>span{color:var(--muted);font-size:10px}.rule-line{flex-wrap:wrap;gap:8px;padding:25px 0 20px;display:flex}.rule-chip{color:var(--green);background:#3e62560f;border:1px solid #3e625640;border-radius:20px;align-items:center;gap:8px;padding:8px 9px 8px 13px;font-size:11px;display:flex}.rule-chip button{width:18px;height:18px;color:var(--green);cursor:pointer;background:#3e62561f;border:0;border-radius:50%;padding:0}.inline-form{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.inline-form input{width:100px}.channel-row{border-bottom:1px solid var(--line);grid-template-columns:38px 1fr auto;align-items:center;gap:11px;min-height:61px;display:grid}.channel-icon{width:34px;height:34px;color:var(--green);background:#3e625617;border-radius:50%;place-items:center;display:grid}.channel-row strong,.channel-row span{display:block}.channel-row strong{font-size:12px}.channel-row div span{max-width:230px;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-top:3px;font-size:9px;overflow:hidden}.switch{cursor:pointer;background:#c7c0b7;border:0;border-radius:20px;width:34px;height:19px;padding:2px;transition:all .2s}.switch span{background:#fff;border-radius:50%;width:15px;height:15px;transition:all .2s;display:block}.switch.on{background:var(--green)}.switch.on span{transform:translate(15px)}.add-channel{margin-top:15px}.add-channel summary{color:var(--red);cursor:pointer;font-size:11px;list-style:none}.channel-form{grid-template-columns:1fr 1fr;gap:8px;margin-top:14px;display:grid}.channel-form button,.channel-form small{grid-column:1/-1}input,select,textarea{width:100%;color:var(--ink);border:1px solid var(--line);background:#ffffff8c;border-radius:2px;outline:0;transition:all .15s}input,select{height:42px;padding:0 11px}textarea{resize:vertical;padding:10px 11px}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px #3e625614}.delivery-list{border-top:1px solid var(--line)}.delivery-row{border-bottom:1px solid var(--line);grid-template-columns:12px 1fr 130px 80px 18px;align-items:center;gap:13px;min-height:64px;display:grid}.delivery-dot{background:var(--red);border-radius:50%;width:6px;height:6px}.delivery-row strong,.delivery-row div span{display:block}.delivery-row strong{font-size:12px}.delivery-row div span,.delivery-row time{color:var(--muted);margin-top:3px;font-size:10px}.status-pill{border-radius:20px;width:max-content;padding:4px 8px;font-size:9px}.status-sent{color:var(--green);background:#3e62561a}.status-failed{color:var(--red);background:#c44c3f1a}.status-pending{color:#88651f;background:#dfae4e24}.status-skipped{color:var(--muted);background:#50463c14}.muted-icon{color:#aaa198}.last-section{padding-bottom:65px}.empty-state{border:1px dashed var(--line);color:var(--muted);text-align:center;font:14px var(--serif);grid-column:1/-1;padding:44px}.empty-state.compact{padding:28px}footer{color:#91877d;border-top:1px solid var(--line);letter-spacing:.08em;justify-content:space-between;padding:28px 52px;font-size:9px;display:flex}footer p{margin:0}footer code{font-size:10px}.person-dialog{width:min(680px,100vw - 28px);color:var(--ink);background:var(--cream);border:0;border-radius:4px 28px;padding:0;box-shadow:0 30px 90px #241e1959}.person-dialog::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#202521a3}.dialog-topline{background:linear-gradient(90deg, var(--red) 0 38%, #e6ad58 38% 63%, var(--green) 63%);height:7px}.dialog-heading{justify-content:space-between;align-items:start;padding:28px 32px 22px;display:flex}.dialog-heading h2{font:25px var(--serif);margin:7px 0 0}.icon-button{border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:50%;place-items:center;width:34px;height:34px;padding:0;display:grid}.person-form{padding:0 32px 30px}.field-grid{grid-template-columns:1fr 1fr;gap:17px 14px;display:grid}.field{gap:7px;display:grid}.field>span,.date-fields>span{color:#6e655c;font-size:11px}.field-wide{grid-column:1/-1}.date-fields>div{grid-template-columns:1fr 1fr;gap:8px;display:grid}.date-fields label{position:relative}.date-fields small{color:var(--muted);position:absolute;top:13px;right:11px}.check-field{align-items:center;gap:8px;font-size:11px;display:flex}.check-field input{width:15px;height:15px;accent-color:var(--green)}.dialog-actions{justify-content:flex-end;gap:9px;margin-top:24px;display:flex}.form-error{color:var(--red-dark);margin:10px 0 0;font-size:11px}.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}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (max-width:980px){.app-shell{grid-template-columns:82px minmax(0,1fr)}.sidebar{align-items:center;padding:27px 15px}.brand>span:last-child,.sidebar nav span,.sidebar-note,.sidebar-foot{display:none}.sidebar nav{margin-top:55px}.sidebar nav a{padding:13px}.sidebar nav a.active:after{display:none}.hero{grid-template-columns:1fr .7fr;padding:56px 46px}.hero h2{font-size:40px}.sun-disc{width:160px;height:160px}.orbit-one{width:250px;height:170px}.orbit-two{width:290px;height:230px}.upcoming-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:720px){.app-shell{padding-bottom:66px;display:block}.sidebar{width:100%;height:66px;padding:8px 16px calc(8px + env(safe-area-inset-bottom));border:0;border-top:1px solid var(--line);z-index:12;flex-direction:row;justify-content:center;position:fixed;top:auto;bottom:0}.brand{display:none}.sidebar nav{justify-content:space-around;width:min(430px,100%);margin:0;display:flex}.sidebar nav a{flex-direction:column;gap:3px;padding:6px 14px;font-size:9px;color:var(--muted)!important;background:0 0!important}.sidebar nav a.active{color:var(--red)!important}.sidebar nav span{display:block}.topbar{padding:24px 20px}.topbar h1{font-size:16px}.topbar .primary-button{width:42px;padding:0;font-size:0}.topbar .primary-button svg{width:18px}.hero{grid-template-columns:1fr;min-height:580px;padding:48px 26px 28px}.hero h2{font-size:36px}.hero-art{min-height:240px}.sun-disc{width:140px;height:140px}.sun-disc svg{width:55px}.orbit-one{width:230px;height:140px}.orbit-two{width:275px;height:205px}.stamp{right:12px}.section-block{padding:54px 20px 0}.section-heading{align-items:flex-start}.section-heading h2{font-size:23px}.section-heading .muted{text-align:right;max-width:115px;line-height:1.5}.upcoming-grid{grid-template-columns:1fr 1fr;gap:9px}.upcoming-card{min-height:215px;padding:15px}.card-date strong{font-size:38px}.person-row{grid-template-columns:38px 1fr auto}.person-birthday{grid-column:2}.person-note{display:none}.row-actions{grid-area:1/3/3}.reminder-layout{grid-template-columns:1fr}.delivery-row{grid-template-columns:10px 1fr auto;padding:9px 0}.delivery-row time,.delivery-row .status-pill,.delivery-row>svg{grid-column:2}.delivery-row .status-pill{grid-area:1/3}.delivery-row>svg{display:none}footer{padding:30px 20px;line-height:1.7;display:block}.field-grid{grid-template-columns:1fr}.field-wide{grid-column:auto}.dialog-heading{padding:24px 22px 18px}.person-form{padding:0 22px 24px}}
