:root{font-family:PingFang SC,Microsoft YaHei,Noto Sans CJK SC,sans-serif;color:#24332f;background:#f6f5f0;font-synthesis:none;--green:#1f5c4d;--deep:#163d34;--cream:#f6f5f0;--paper:#fff;--line:#e5e4dd;--muted:#75817d;--amber:#c48b42;--rose:#b65d55;--blue:#5b7e8e}*{box-sizing:border-box}body{margin:0;min-width:320px;background:var(--cream)}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.app-layout{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:244px;background:#173c34;color:#fff;padding:28px 18px;display:flex;flex-direction:column;z-index:30}.brand{display:flex;align-items:center;gap:12px;padding:0 10px 33px}.brand-mark{display:grid;place-items:center;width:39px;height:39px;border-radius:13px;background:#d4a85f;color:#173c34}.brand div{display:flex;flex-direction:column}.brand strong{font-family:Songti SC,STSong,serif;font-size:20px;letter-spacing:2px}.brand small{font-size:10px;opacity:.55;letter-spacing:3px;margin-top:3px}.sidebar nav{display:grid;gap:6px}.sidebar nav a{display:flex;align-items:center;gap:13px;padding:12px 14px;color:#b8ccc6;border-radius:10px;font-size:14px;transition:.2s}.sidebar nav a:hover,.sidebar nav a.active{background:#26564a;color:#fff}.sidebar nav a.active{box-shadow:inset 3px 0 #d4a85f}.sidebar-footer{margin-top:auto;padding:18px 8px 0;border-top:1px solid #31584f;display:flex;align-items:center;gap:10px}.user-avatar{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:#e4c887;color:#173c34;font-weight:700}.user-copy{display:flex;flex-direction:column;min-width:0;flex:1}.user-copy strong{font-size:13px}.user-copy small{font-size:11px;opacity:.55}.main-content{margin-left:244px;min-height:100vh}.page{max-width:1320px;margin:auto;padding:44px 48px 70px}.page-header{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:32px}.eyebrow{display:block;color:#a47739;text-transform:uppercase;letter-spacing:2.5px;font-size:11px;font-weight:700;margin-bottom:9px}.page-header h1{font-family:Songti SC,STSong,serif;font-size:30px;margin:0;color:#1d342e;letter-spacing:1px}.page-header p{margin:8px 0 0;color:var(--muted);font-size:14px}.btn{border:0;border-radius:9px;padding:10px 16px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-weight:600;font-size:13px}.btn.primary{background:var(--green);color:#fff;box-shadow:0 6px 16px #1f5c4d26}.btn.primary:hover{background:#17483d}.btn.secondary{background:#fff;color:#41534e;border:1px solid var(--line)}.btn:disabled{opacity:.55}.icon-btn{width:32px;height:32px;border:0;background:#f0f2ee;color:#65736f;border-radius:8px;display:grid;place-items:center}.icon-btn:hover{background:#e4e9e5;color:var(--green)}.icon-btn.danger:hover{color:#af4b45;background:#f9e8e6}.icon-btn.dark{background:transparent;color:#a7c0ba}.mobile-menu,.mobile-close{display:none}.panel{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 10px 30px #31483e0a}.panel>header{display:flex;justify-content:space-between;align-items:center}.panel h2{font-family:Songti SC,STSong,serif;font-size:19px;margin:0}.panel>header a{font-size:12px;color:var(--green);font-weight:600}.loading,.empty{min-height:300px;display:grid;place-content:center;text-align:center;color:var(--muted)}.empty span{margin:auto;width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:#e8eeea;color:var(--green)}.empty h3{font-family:Songti SC,STSong,serif;color:#344941;margin:14px 0 4px}.empty p{margin:0;font-size:13px}.quiet-empty{min-height:160px;display:grid;place-content:center;justify-items:center;color:#9aa39f}.quiet-empty p{font-size:13px}.toolbar{display:flex;gap:10px;margin-bottom:24px}.search-box{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:0 13px;width:min(420px,100%);color:#8c9793}.search-box input{border:0;outline:0;height:42px;flex:1;background:transparent}.filter-tabs{display:flex;gap:5px;margin-bottom:24px;overflow:auto}.filter-tabs button{border:0;background:transparent;color:#7a8581;padding:8px 15px;border-radius:20px;white-space:nowrap;font-size:13px}.filter-tabs button.active{color:#fff;background:var(--green)}.auth-page{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr}.auth-story{background:linear-gradient(145deg,#173d35,#214f45);padding:46px 8vw;color:#fff;display:flex;flex-direction:column;position:relative;overflow:hidden}.auth-story:after{content:"";position:absolute;width:520px;height:520px;border:1px solid #ffffff14;border-radius:50%;right:-180px;bottom:-130px;box-shadow:0 0 0 80px #ffffff05,0 0 0 160px #ffffff04}.auth-brand{display:flex;gap:11px;align-items:center}.auth-brand strong{font-family:Songti SC,STSong,serif;font-size:21px;letter-spacing:2px}.story-copy{margin:auto 0;max-width:520px;position:relative;z-index:1}.story-copy span{color:#e0be79;font-size:13px;letter-spacing:4px}.story-copy h1{font-family:Songti SC,STSong,serif;font-size:54px;line-height:1.35;margin:22px 0}.story-copy p{font-size:16px;line-height:2;opacity:.7;max-width:440px}.quote{font-family:Songti SC,STSong,serif;opacity:.65;font-size:13px}.auth-panel{background:#fbfaf7;display:grid;place-items:center;padding:30px}.auth-form{width:min(370px,100%)}.auth-form h2{font-family:Songti SC,STSong,serif;font-size:27px;margin:0}.auth-form>p{color:var(--muted);font-size:14px;margin:8px 0 32px}.auth-form label,.form-grid>label{display:grid;gap:7px;font-size:12px;font-weight:600;color:#52625d;margin-bottom:18px}.auth-form input,.form-grid input,.form-grid select,.form-grid textarea,.member-row input,.member-row select{width:100%;border:1px solid #dcded8;border-radius:8px;padding:10px 12px;outline:0;background:#fff;color:#253631}.auth-form input:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus{border-color:#548273;box-shadow:0 0 0 3px #54827316}.auth-submit{width:100%;height:44px;margin-top:3px}.text-btn{border:0;background:transparent;color:var(--green);font-weight:600;font-size:12px;padding:12px}.auth-form>.text-btn{width:100%;margin-top:5px}.form-error{background:#fae9e7;color:#a64843;padding:10px 12px;border-radius:8px;font-size:12px}.dashboard-head{align-items:center}.today{font-family:Songti SC,STSong,serif;font-size:13px;color:#6f7c78;background:#fff;border:1px solid var(--line);padding:10px 14px;border-radius:8px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}.stat-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;display:flex;gap:15px;align-items:center;transition:.2s}.stat-card:hover{transform:translateY(-2px);box-shadow:0 9px 25px #31483e12}.stat-icon{width:45px;height:45px;border-radius:12px;display:grid;place-items:center}.stat-icon svg{width:21px}.stat-icon.green{background:#e3eee9;color:#2f7160}.stat-icon.amber{background:#f7ecd9;color:#af7938}.stat-icon.blue{background:#e3edf1;color:#527789}.stat-icon.rose{background:#f6e5e3;color:#a95b55}.stat-card div{display:grid}.stat-card small{font-size:11px;color:#8a9491}.stat-card strong{font-family:Songti SC,STSong,serif;font-size:24px;line-height:1.2}.stat-card em{font-style:normal;font-size:10px;color:#a3aaa7}.dashboard-grid{display:grid;grid-template-columns:1.35fr .85fr;gap:18px;margin-bottom:18px}.gift-summary,.upcoming,.recent-panel{padding:23px}.balance{border-bottom:1px solid #eee;padding:24px 0 18px;display:grid}.balance small{color:#87918e;font-size:11px}.balance strong{font-family:Songti SC,STSong,serif;font-size:30px}.positive,.received{color:#27705c}.negative,.given{color:#b45c54}.money-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:18px 0}.money-row>div,.ledger-summary>div{display:flex;align-items:center;gap:11px}.money-icon{width:38px;height:38px;border-radius:10px;display:grid;place-items:center}.money-icon svg{width:18px}.money-icon.income{background:#e5f1eb;color:#28715d}.money-icon.expense{background:#f7e8e5;color:#ad5c54}.money-row p,.ledger-summary p{display:grid;margin:0}.money-row small,.ledger-summary small{font-size:10px;color:#8b9592}.money-row strong{font-size:14px}.mini-chart{height:110px;display:flex;align-items:end;gap:16px;border-top:1px dashed #e1e3df;padding:14px 8px 0}.chart-group{display:grid;align-items:end;justify-items:center;flex:1;height:100%}.bars{display:flex;align-items:end;gap:3px;height:82px}.bar{display:block;width:7px;border-radius:4px 4px 1px 1px}.bar.received{background:#4f8b78}.bar.given{background:#d19a91}.chart-group small{font-size:9px;color:#9ca4a1}.chart-placeholder{height:100px;display:grid;place-content:center;color:#a1aaa7;font-size:11px;border-top:1px dashed #e1e3df}.event-list{display:grid;margin-top:18px}.event-item{display:flex;gap:13px;align-items:center;padding:11px 0;border-bottom:1px solid #eee}.event-item:last-child{border:0}.date-chip{width:43px;height:47px;background:#edf2ee;border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--green)}.date-chip strong{font-size:16px}.date-chip small{font-size:9px}.event-item>div:last-child{display:grid}.event-item>div:last-child strong{font-size:13px}.event-item>div:last-child small{font-size:10px;color:#8e9794;margin-top:3px}.recent-panel{padding-bottom:10px}.recent-table{margin-top:13px}.recent-row{display:grid;grid-template-columns:38px 1fr 120px 110px;gap:10px;align-items:center;padding:11px 0;border-top:1px solid #eee}.person-dot{width:31px;height:31px;border-radius:50%;display:grid;place-items:center;background:#e5ece8;color:var(--green);font-size:12px;font-weight:700}.recent-row>div{display:grid}.recent-row>div strong{font-size:12px}.recent-row>div small,.recent-row time{font-size:10px;color:#909995}.recent-row b{text-align:right;font-size:13px}.people-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px}.person-card,.relationship-card,.family-card,.event-card{background:#fff;border:1px solid var(--line);border-radius:14px}.person-card{padding:23px;position:relative;text-align:center}.person-actions{position:absolute;right:12px;top:12px;display:flex;gap:4px;opacity:0;transition:.2s}.person-card:hover .person-actions{opacity:1}.large-avatar{width:58px;height:58px;margin:auto;border-radius:50%;display:grid;place-items:center;background:#e2ece7;color:var(--green);font-family:Songti SC,STSong,serif;font-size:21px}.person-card h3{margin:11px 0 3px;font-family:Songti SC,STSong,serif}.person-card>p{margin:0;color:#8b9491;font-size:11px}.tag-row{display:flex;justify-content:center;gap:5px;min-height:46px;padding:13px 0}.tag-row span{height:20px;background:#f4eddf;color:#9e723c;border-radius:10px;padding:2px 8px;font-size:9px}.tag-row .muted-tag{background:#f1f2ef;color:#a2a8a5}.person-card dl{border-top:1px solid #eee;margin:0;padding-top:11px;display:grid;grid-template-columns:1fr 1fr;gap:9px;text-align:left}.person-card dl div{display:grid}.person-card dt{font-size:9px;color:#9ca4a1}.person-card dd{margin:1px 0;font-size:11px;overflow:hidden;text-overflow:ellipsis}.relationship-list{display:grid;grid-template-columns:1fr 1fr;gap:15px}.relationship-card{padding:20px;position:relative}.relation-people{display:flex;align-items:center;gap:9px}.mini-avatar{width:35px;height:35px;flex:0 0 auto;border-radius:50%;display:grid;place-items:center;background:#deebe5;color:#2c6959;font-size:12px;font-weight:700}.mini-avatar.alt{background:#f1e6d4;color:#a47438}.relation-people>strong{font-family:Songti SC,STSong,serif;font-size:14px}.relation-line{display:grid;flex:1;text-align:center}.relation-line small{color:#9b713e;font-size:9px}.relation-line i{height:1px;background:#d8dcd7;position:relative}.relation-line i:after{content:"◆";font-size:7px;position:absolute;left:50%;top:-6px;color:#c1a273;background:#fff;padding:0 3px}.closeness{display:flex;align-items:center;gap:4px;margin-top:15px}.closeness span{font-size:9px;color:#959e9a;margin-right:3px}.closeness i{width:7px;height:7px;border-radius:50%;background:#e3e5e1}.closeness i.filled{background:#ce9c52}.relationship-card>p{font-size:11px;color:#7b8582;margin:11px 0 0}.card-buttons{display:flex;gap:4px}.relationship-card>.card-buttons{position:absolute;right:10px;bottom:10px}.family-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.family-card{overflow:hidden}.family-card>header{padding:19px;display:flex;align-items:center;gap:12px;border-bottom:1px solid #eee}.family-card>header>span{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;background:#e3ede8;color:var(--green)}.family-card>header>div:nth-child(2){flex:1}.family-card h3{font-family:Songti SC,STSong,serif;margin:0}.family-card header p{display:flex;align-items:center;gap:3px;font-size:10px;color:#8a9490;margin:4px 0 0}.family-members{padding:13px 19px}.family-members>div{display:flex;align-items:center;gap:10px;padding:7px 0}.family-members p{display:grid;margin:0}.family-members strong{font-size:12px}.family-members small{font-size:10px;color:#8b9491}.family-members em{font-style:normal;color:#9b713e;background:#f4ead9;padding:1px 5px;border-radius:5px;margin-left:7px}.family-members .no-members{color:#9ba39f;font-size:11px}.family-card>footer{padding:10px 19px;background:#fafaf7;color:#828c88;font-size:10px}.timeline{position:relative}.timeline:before{content:"";position:absolute;left:118px;top:0;bottom:0;width:1px;background:#dbddd8}.timeline>article{display:grid;grid-template-columns:95px 1fr;gap:47px;margin-bottom:17px;position:relative}.timeline-date{display:flex;flex-direction:column;align-items:flex-end;color:#70807a;padding-top:17px}.timeline-date svg{width:16px;color:#af7e3f}.timeline-date strong{font-size:11px;margin-top:4px}.timeline>article:before{content:"";width:9px;height:9px;border:3px solid #f6f5f0;border-radius:50%;background:#bc8a4d;position:absolute;left:114px;top:22px}.event-card{padding:19px 21px}.event-card header{display:flex;justify-content:space-between}.event-type{font-size:9px;color:#986e38;background:#f5ead8;border-radius:10px;padding:3px 9px}.event-card h3{font-family:Songti SC,STSong,serif;margin:10px 0 4px}.event-card>p{color:#808a87;font-size:11px;margin:0}.event-card footer{display:flex;gap:18px;margin-top:15px;padding-top:12px;border-top:1px solid #eee}.event-card footer span{display:flex;align-items:center;gap:4px;color:#7c8884;font-size:10px}.ledger-summary{display:grid;grid-template-columns:1fr 1fr 1.2fr;background:#fff;border:1px solid var(--line);border-radius:14px;padding:19px 22px;margin-bottom:20px}.ledger-summary>div{border-right:1px solid #eee}.ledger-summary .net{border:0;display:grid;justify-content:end;text-align:right}.ledger-summary strong{font-family:Songti SC,STSong,serif;font-size:18px}.ledger-table{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.ledger-head,.ledger-row{display:grid;grid-template-columns:1.2fr 1.4fr 1fr .8fr 76px;align-items:center;gap:12px;padding:12px 18px}.ledger-head{background:#f2f3ef;color:#7f8985;font-size:10px}.ledger-row{border-top:1px solid #eee;font-size:11px}.ledger-person{display:flex;align-items:center;gap:9px}.ledger-person i{width:31px;height:31px;display:grid;place-items:center;border-radius:50%;font-style:normal;background:#e4ece8;color:var(--green);font-weight:700}.ledger-row>span:nth-child(3){display:grid}.ledger-row>span:nth-child(3) small{color:#929b97}.ledger-row>b{text-align:right}.ledger-row .card-buttons{justify-content:flex-end}.modal-backdrop{position:fixed;z-index:100;inset:0;background:#142c267d;display:grid;place-items:center;padding:20px;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal{width:min(520px,100%);max-height:90vh;background:#fbfbf8;border-radius:16px;box-shadow:0 20px 60px #10241f40;overflow:hidden}.modal.wide{width:min(720px,100%)}.modal>header{display:flex;justify-content:space-between;align-items:center;padding:19px 22px;border-bottom:1px solid #e4e4de}.modal h2{font-family:Songti SC,STSong,serif;font-size:18px;margin:0}.modal-body{padding:22px;overflow:auto;max-height:calc(90vh - 66px)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.form-grid .full{grid-column:1/-1}.form-grid>label{margin-bottom:15px}.form-grid textarea{resize:vertical}.form-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:7px}.range{padding:4px!important;accent-color:var(--green)}.subform-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:12px}.member-row{display:grid;grid-template-columns:1.2fr 1fr auto 34px;gap:8px;align-items:center;background:#f1f3ef;padding:8px;border-radius:9px;margin-bottom:8px}.member-row.participant{grid-template-columns:1.2fr .75fr .9fr 1fr 34px}.check{display:flex!important;align-items:center;gap:5px;white-space:nowrap;margin:0!important;font-size:10px!important}.check input{width:auto!important}.event-badges{display:flex;gap:6px}.event-side{font-size:9px;border-radius:10px;padding:3px 9px;background:#e5eee9;color:#2b6e5a}.event-side.theirs{background:#f4e8db;color:#a06f36}.event-side.shared{background:#e5ebf1;color:#557386}.family-gift-stats{display:grid;grid-template-columns:repeat(3,1fr) auto;gap:10px;align-items:center;padding:12px 19px;border-top:1px solid #eee;background:#fbfbf8}.family-gift-stats>span{display:grid}.family-gift-stats small{font-size:9px;color:#929b97}.family-gift-stats strong{font-size:11px}.family-gift-stats .btn{padding:7px 10px}.gift-link{margin-left:0!important;background:#f5eadc;color:#94682f}.participant-groups{display:grid;gap:10px}.participant-group{display:grid;gap:8px}.participant-group-head{background:#f3f6f3;border:1px solid var(--line);border-radius:10px;padding:9px 30px 9px 11px;display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#4f645c;position:relative;cursor:pointer;-webkit-user-select:none;user-select:none}.participant-group-head:after{content:"▾";position:absolute;right:11px;color:#6c7a76;transition:transform .2s}.participant-group-head.collapsed:after{transform:rotate(-90deg)}.participant-group-head strong{font-family:Songti SC,STSong,serif;font-size:12px}.participant-group-head small{color:#8a9491}.participant-group .participant-editor{background:#f8faf8}.participant-group-body{display:grid;gap:8px}.family-invite-box{display:grid;grid-template-columns:1fr 1.2fr .7fr auto;gap:8px;align-items:center;padding:11px;background:#edf3ef;border:1px solid #dce8e1;border-radius:10px;margin:4px 0 15px}.family-invite-box strong{font-size:11px;color:#356457}.family-invite-box select{border:1px solid #d7ddd8;border-radius:7px;padding:8px;background:#fff;font-size:11px}.participant-editor{display:flex;gap:8px;align-items:flex-start;background:#f4f4f1;border:1px solid #e5e6e1;border-radius:10px;padding:10px;margin-bottom:8px}.participant-main{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;flex:1}.participant-main label{display:grid;gap:4px;font-size:9px;color:#75807c}.participant-main input,.participant-main select{min-width:0;width:100%;border:1px solid #daddd7;border-radius:7px;padding:7px;background:#fff;font-size:10px}.attendance-warning{color:#ad554f!important}.relation-anchor-box{display:grid;grid-template-columns:1fr 1.2fr;background:#f5f5ef;border:1px solid #dce8e1;border-radius:10px;padding:10px 11px;gap:6px;margin:4px 0 15px}.relation-anchor-box strong{font-size:11px;color:#356457}.relation-anchor-box select{border:1px solid #d7ddd8;border-radius:7px;padding:8px;background:#fff;font-size:11px}.relation-anchor-box p{grid-column:1/-1;margin:0;font-size:9px;color:#6d786f;line-height:1.4}.expense-link{margin-left:auto;border:0;background:#edf3ef;color:var(--green);border-radius:8px;padding:5px 9px;display:flex;align-items:center;gap:4px;font-size:10px;font-weight:600}.expense-summary{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:10px;margin-bottom:16px}.expense-summary>div{display:grid;padding:13px 15px;border-right:1px solid var(--line)}.expense-summary>div:last-child{border:0}.expense-summary small{font-size:9px;color:#929b97}.expense-summary strong{font-family:Songti SC,STSong,serif;font-size:16px}.expense-form{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;background:#f2f4f0;padding:14px;border-radius:10px}.expense-form-title,.expense-form .full{grid-column:1/-1}.expense-form-title{display:flex;align-items:center;justify-content:space-between;font-size:12px}.expense-form label{display:grid;gap:5px;font-size:10px;color:#687570;font-weight:600}.expense-form input,.expense-form select{min-width:0;width:100%;border:1px solid #daddd7;border-radius:7px;padding:8px;background:#fff}.expense-form .btn{justify-self:end}.expense-list{margin-top:18px}.expense-row{display:grid;grid-template-columns:1.2fr 1.2fr .8fr .7fr 75px;gap:10px;align-items:center;padding:10px;border-top:1px solid #eee;font-size:10px}.expense-row>span{display:grid}.expense-row small{color:#949d99}.expense-row>b{text-align:right}.expense-row .card-buttons{display:flex;justify-content:flex-end}.expense-head{background:#f3f4f1;color:#818b87;border:0;border-radius:7px}.expense-empty{text-align:center;color:#969f9b;font-size:11px;padding:28px}.api-layout{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}.api-create,.api-guide,.key-list-panel{padding:23px}.api-create>p,.api-guide>p{font-size:12px;line-height:1.7;color:var(--muted)}.secure-badge{display:flex;align-items:center;gap:5px;font-size:10px;color:#28705d;background:#e5f0ea;border-radius:12px;padding:5px 9px}.api-key-form{display:grid;grid-template-columns:1fr 130px auto;gap:10px;align-items:end;margin-top:19px}.api-key-form label,.api-guide label{display:grid;gap:6px;font-size:11px;font-weight:600;color:#64716d}.api-key-form input,.api-key-form select{border:1px solid #dcded8;border-radius:8px;padding:9px 11px;background:#fff;height:39px}.new-key-box{display:grid;gap:10px;background:#edf3ef;border:1px solid #d8e7df;border-radius:10px;padding:14px;margin-top:16px}.new-key-box strong{font-size:11px;color:#2c6757}.new-key-box code,.copy-field code{font-family:monospace;font-size:11px;overflow-wrap:anywhere;color:#334c45}.new-key-box .btn{justify-self:start}.api-guide label{margin-top:16px}.copy-field{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:8px;padding:8px 9px;background:#fafaf7}.copy-field code{flex:1}.prompt-box{white-space:pre-wrap;background:#213d36;color:#d9e5e0;border-radius:9px;padding:13px;font:11px/1.7 monospace;min-height:112px}.api-guide>.btn{margin-top:10px}.key-list{margin-top:16px}.key-row{display:grid;grid-template-columns:38px 1.2fr 1fr 1fr 55px 34px;align-items:center;gap:10px;padding:12px 0;border-top:1px solid #eee}.key-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:9px;background:#e5eee9;color:var(--green)}.key-row>div{display:grid}.key-row strong{font-size:12px}.key-row code{font-size:9px;color:#8d9692}.key-row p{display:grid;margin:0;font-size:10px}.key-row p small{color:#99a19e}.key-status{font-size:9px;color:#29705d;background:#e4f0e9;border-radius:10px;padding:3px 7px;text-align:center}.key-status.disabled{color:#8c9692;background:#eceeeb}.api-empty{padding:45px;text-align:center;color:#959e9a;font-size:12px}@media(max-width:1050px){.stat-grid,.people-grid{grid-template-columns:1fr 1fr}.dashboard-grid,.relationship-list,.api-layout{grid-template-columns:1fr}.api-key-form{grid-template-columns:1fr 1fr}.api-key-form .btn{grid-column:1/-1}.key-row{grid-template-columns:38px 1fr 1fr 34px}.key-row p:nth-of-type(2),.key-status{display:none}.expense-form,.family-invite-box,.relation-anchor-box,.participant-main{grid-template-columns:1fr 1fr}}@media(max-width:760px){.sidebar{transform:translate(-100%);transition:.25s}.sidebar.open{transform:none}.mobile-close{display:grid;position:absolute;right:12px;top:12px;border:0;background:transparent;color:#fff}.scrim{position:fixed;inset:0;background:#0006;z-index:20}.main-content{margin-left:0}.mobile-menu{display:grid;place-items:center;position:fixed;z-index:15;right:16px;top:14px;width:40px;height:40px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--green)}.page{padding:28px 17px 55px}.page-header{align-items:flex-start;flex-direction:column}.page-header h1{font-size:26px}.dashboard-head .today{display:none}.stat-grid{grid-template-columns:1fr 1fr;gap:9px}.stat-card{padding:13px}.stat-card em{display:none}.people-grid,.family-grid{grid-template-columns:1fr}.person-actions{opacity:1}.auth-page{grid-template-columns:1fr}.auth-story{display:none}.auth-panel{min-height:100vh}.timeline:before{left:12px}.timeline>article{grid-template-columns:1fr;gap:7px;padding-left:31px}.timeline-date{align-items:flex-start;padding:0;flex-direction:row;gap:5px}.timeline>article:before{left:8px;top:3px}.event-card footer{flex-wrap:wrap}.ledger-summary{grid-template-columns:1fr 1fr}.ledger-summary>div:nth-child(2){border:0}.ledger-summary .net{grid-column:1/-1;border-top:1px solid #eee;margin-top:14px;padding-top:12px;justify-content:start;text-align:left}.ledger-head{display:none}.ledger-row{grid-template-columns:1fr 1fr;gap:8px}.ledger-row>span:nth-child(2){text-align:right}.ledger-row>span:nth-child(3){padding-left:40px}.ledger-row>b{text-align:right}.ledger-row .card-buttons{grid-column:1/-1;border-top:1px dashed #eee;padding-top:7px}.form-grid{grid-template-columns:1fr}.form-grid>*{grid-column:1!important}.member-row,.member-row.participant{grid-template-columns:1fr 1fr}.member-row .icon-btn{justify-self:end}.recent-row{grid-template-columns:36px 1fr auto}.recent-row time{display:none}.money-row{gap:5px}.api-key-form{grid-template-columns:1fr}.api-key-form>*{grid-column:1!important}.key-row{grid-template-columns:36px 1fr 34px}.key-row p{display:none}.expense-form,.family-invite-box,.relation-anchor-box,.participant-main,.expense-summary{grid-template-columns:1fr}.expense-summary>div{border-right:0;border-bottom:1px solid var(--line)}.expense-row{grid-template-columns:1fr 1fr}.expense-head{display:none}.expense-row>span:nth-child(3){display:none}.expense-row .card-buttons{grid-column:1/-1}.expense-link{margin-left:0}.family-gift-stats{grid-template-columns:repeat(3,1fr)}.family-gift-stats .btn{grid-column:1/-1}}.analytics-panel{padding:14px 19px;margin-bottom:18px}.analytics-toolbar{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.analytics-toolbar label{display:grid;gap:5px;font-size:10px;color:#61706c;font-weight:600}.analytics-toolbar input,.analytics-toolbar select{min-width:130px;border:1px solid #daddd7;border-radius:8px;padding:8px 10px;background:#fff}.analytics-overview{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin-bottom:18px}.analytics-overview .stat-card{padding:16px}.analytics-head{grid-template-columns:1.4fr 1fr 1fr 1.2fr 1fr}@media(max-width:1050px){.analytics-overview{grid-template-columns:1fr 1fr 1fr}}@media(max-width:760px){.analytics-overview{grid-template-columns:1fr 1fr}.analytics-head{display:none}.ledger-row{grid-template-columns:1fr 1fr}}.kinship-panel{padding:22px;margin-bottom:22px}.kinship-toolbar{display:grid;grid-template-columns:1fr minmax(170px,230px) minmax(190px,250px);gap:14px;align-items:end}.kinship-toolbar h2{margin:0}.kinship-toolbar label{display:grid;gap:6px;font-size:10px;font-weight:600;color:#667570}.kinship-toolbar select{width:100%;border:1px solid #dcded8;border-radius:8px;padding:9px 11px;background:#fff;color:#253631}.kinship-chart{width:100%;height:520px;margin-top:12px;border-top:1px solid #eef0ec}.graph-empty{min-height:240px;display:grid;place-content:center;color:var(--muted);font-size:12px}.kinship-result{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:7px 13px;background:#edf3ef;border:1px solid #dae8e1;border-radius:10px;padding:12px 14px}.kinship-result span{font-size:11px;color:#65736e}.kinship-result strong{font-family:Songti SC,STSong,serif;font-size:18px;color:var(--green)}.kinship-result small{font-size:10px;color:#788580;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kinship-result em{grid-column:1/-1;font-style:normal;font-size:9px;color:#9a743f}.graph-note{margin:10px 0 0;color:#8a9591;font-size:10px}.relation-help{margin:-3px 0 14px;color:#788580;font-size:10px;line-height:1.6}.unconnected-panel{margin-top:14px;padding-top:14px;border-top:1px solid #eceeea}.unconnected-panel>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}.unconnected-panel>header div{display:grid;gap:2px}.unconnected-panel>header strong{font-size:12px;color:#40534d}.unconnected-panel>header small{font-size:9px;color:#8b9591}.unconnected-list{display:grid;grid-template-columns:1fr 1fr;gap:7px;max-height:250px;overflow:auto;padding-right:3px}.unconnected-list article{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:9px;padding:9px 10px;background:#f7f8f5;border:1px solid #eaebe6;border-radius:9px}.unconnected-list article>div{display:grid}.unconnected-list article strong{font-size:11px}.unconnected-list article small{font-size:9px;color:#8c9692}.unconnected-list .btn{padding:7px 9px;font-size:10px}@media(max-width:760px){.kinship-panel{padding:15px}.kinship-toolbar{grid-template-columns:1fr}.kinship-chart{height:430px}.kinship-result{grid-template-columns:1fr}.kinship-result small{white-space:normal}.kinship-toolbar .eyebrow{margin-bottom:4px}.unconnected-list{grid-template-columns:1fr}.unconnected-list article{grid-template-columns:34px 1fr}.unconnected-list .btn{grid-column:1/-1}}.detail-back{display:inline-flex;align-items:center;gap:5px;color:#66756f;font-size:11px;margin-bottom:18px}.detail-back:hover{color:var(--green)}.event-detail-badges{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:-20px;margin-bottom:22px}.event-detail-badges>span:not(.event-type):not(.event-side){font-size:10px;color:#74817c;background:#fff;border:1px solid var(--line);border-radius:12px;padding:4px 9px}.event-overview-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}.event-visual-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:22px}.attendance-panel,.event-money-panel{padding:21px}.attendance-panel>header,.event-money-panel>header,.event-project-panel>header{display:flex;align-items:center;justify-content:space-between}.attendance-panel>header span,.event-money-panel>header span{font-size:9px;color:#8d9793}.attendance-visual{display:flex;align-items:center;justify-content:center;gap:35px;padding:23px 0 17px}.attendance-ring{--attendance:0deg;width:118px;height:118px;border-radius:50%;display:grid;place-content:center;text-align:center;background:radial-gradient(circle at center,#fff 57%,transparent 59%),conic-gradient(#397766 0 var(--attendance),#e8ece8 var(--attendance) 360deg)}.attendance-ring strong{font-family:Songti SC,STSong,serif;font-size:25px;color:#27483f}.attendance-ring small{font-size:9px;color:#8c9692}.attendance-legend{display:grid;gap:9px}.attendance-legend p{display:grid;grid-template-columns:8px 1fr auto;align-items:center;gap:7px;margin:0;min-width:145px;font-size:10px;color:#6e7a76}.attendance-legend i{width:7px;height:7px;border-radius:50%;background:#397766}.attendance-legend i.confirmed{background:#d0a25d}.attendance-legend i.absent{background:#bc6961}.attendance-legend strong{color:#354b44}.party-bars{display:grid;gap:9px;padding-top:13px;border-top:1px solid #eee}.party-bars>div{display:grid;grid-template-columns:34px 1fr 24px;gap:8px;align-items:center;font-size:9px;color:#7c8883}.party-bars i,.expense-category-bars i{height:7px;background:#edf0ed;border-radius:5px;overflow:hidden}.party-bars b,.expense-category-bars b{display:block;height:100%;background:#4e8877;border-radius:5px}.party-bars b.theirs{background:#c9985a}.party-bars strong{text-align:right}.event-money-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#eceeea;border:1px solid #eceeea;margin-top:18px;border-radius:10px;overflow:hidden}.event-money-grid>div{display:grid;background:#fff;padding:15px}.event-money-grid small{font-size:9px;color:#909a96}.event-money-grid strong{font-family:Songti SC,STSong,serif;font-size:16px}.event-net{display:grid;margin-top:13px;padding:14px;background:#f5f6f2;border-radius:9px}.event-net span,.event-net small{font-size:9px;color:#818c88}.event-net strong{font-family:Songti SC,STSong,serif;font-size:23px}.event-detail-section{margin-bottom:22px}.event-detail-section>header{display:flex;align-items:end;justify-content:space-between;margin-bottom:12px}.event-detail-section>header h2{font-family:Songti SC,STSong,serif;margin:0;font-size:20px}.event-detail-section>header small{font-size:10px;color:#8b9591}.event-family-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;align-items:start}.event-family-column{background:#fff;border:1px solid var(--line);border-radius:13px;overflow:hidden}.event-family-column>header{display:flex;align-items:center;justify-content:space-between;padding:14px 15px;background:#f6f8f5;border-bottom:1px solid #e9ebe7}.event-family-column>header div{display:grid}.event-family-column>header strong{font-family:Songti SC,STSong,serif;font-size:15px}.event-family-column>header small{font-size:9px;color:#8c9692}.event-family-column>header>span{font-size:9px;color:#356457;background:#e2ede7;padding:3px 7px;border-radius:10px}.family-attendance-summary{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid #eee}.family-attendance-summary span{display:flex;justify-content:center;gap:4px;padding:8px 3px;border-right:1px solid #eee;font-size:8px;color:#8b9491}.family-attendance-summary span:last-child{border:0}.family-attendance-summary b{color:#43564f}.event-participant-list{padding:8px 13px}.event-participant-list>div{display:grid;grid-template-columns:30px 1fr auto;align-items:center;gap:8px;padding:7px 0;border-bottom:1px dashed #eceeea}.event-participant-list>div:last-child{border:0}.event-participant-list .mini-avatar{width:29px;height:29px;font-size:10px}.event-participant-list p{display:grid;margin:0}.event-participant-list p strong{font-size:10px}.event-participant-list p small{font-size:8px;color:#8e9793}.event-participant-list p em{font-style:normal;margin-left:5px;color:#98703f}.event-participant-list mark{font-size:8px;border:0;border-radius:8px;padding:3px 6px;background:#eef0ed;color:#71807a}.event-participant-list mark.attended{background:#e1eee7;color:#2b6e59}.event-participant-list mark.confirmed{background:#e8eef2;color:#567487}.event-participant-list mark.declined,.event-participant-list mark.no_show{background:#f6e6e4;color:#aa5b54}.event-family-column>footer{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px 14px;background:#fbfbf8;border-top:1px solid #eee}.event-family-column>footer span{display:grid;font-size:8px;color:#8b9591}.event-family-column>footer strong{font-size:10px}.event-project-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:16px}.event-project-panel{padding:21px}.event-project-panel>header .eyebrow{margin-bottom:3px}.event-project-panel>header h2{font-family:Songti SC,STSong,serif;margin:0;font-size:18px}.event-project-panel>header>strong{font-family:Songti SC,STSong,serif;font-size:17px}.expense-category-bars{display:grid;gap:12px;margin-top:19px}.expense-category-bars>div{display:grid;gap:5px}.expense-category-bars p{display:flex;justify-content:space-between;margin:0;font-size:9px;color:#788580}.expense-category-bars p strong{color:#455a52}.detail-expense-list,.detail-gift-list{display:grid;margin-top:18px;border-top:1px solid #eee}.detail-expense-list>div{display:grid;grid-template-columns:1.2fr 1fr auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid #eee}.detail-expense-list span{display:grid}.detail-expense-list strong{font-size:10px}.detail-expense-list small{font-size:8px;color:#8f9895}.detail-expense-list>b{font-size:11px}.detail-gift-list>div{display:grid;grid-template-columns:34px 1fr auto;gap:9px;align-items:center;padding:10px 0;border-bottom:1px solid #eee}.detail-gift-list .money-icon{width:30px;height:30px}.detail-gift-list p{display:grid;margin:0}.detail-gift-list p strong{font-size:10px}.detail-gift-list p small{font-size:8px;color:#8e9793}.detail-gift-list>b{font-size:11px}.event-group-empty{text-align:center;padding:25px 8px;color:#939c98;font-size:10px}.view-link{background:#e8eef2;color:#557486}@media(max-width:1050px){.event-overview-grid,.event-family-columns{grid-template-columns:1fr 1fr}.event-project-grid{grid-template-columns:1fr}}@media(max-width:760px){.event-overview-grid{grid-template-columns:1fr 1fr}.event-visual-grid{grid-template-columns:1fr}.attendance-visual{gap:20px}.event-detail-section>header{align-items:flex-start;gap:5px;flex-direction:column}.detail-expense-list>div{grid-template-columns:1fr auto}.detail-expense-list>div span:nth-child(2){display:none}}@media(max-width:560px){.event-overview-grid,.event-family-columns{grid-template-columns:1fr}}
