:root{
  --ink:#34252c;
  --muted:#796b70;
  --paper:#fbf7f2;
  --card:#fffdf9;
  --green:#3c1f2b;
  --green2:#8a4054;
  --gold:#c69a58;
  --gold-soft:#f4e7d3;
  --line:#eadfd8;
  --danger:#a94b45;
  --shadow:0 20px 60px rgba(57,31,42,.08);
}

body{
  background:
    radial-gradient(circle at 78% 5%,rgba(198,154,88,.12),transparent 22rem),
    linear-gradient(180deg,#fcf9f5 0%,#f7f0eb 100%);
  color:var(--ink);
  letter-spacing:.005em;
}
.auth-locked{overflow:hidden}.auth-locked .app{visibility:hidden;pointer-events:none}.login-screen{position:fixed;inset:0;z-index:1000;display:flex;align-items:flex-start;justify-content:flex-start;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:clamp(22px,4vh,52px) clamp(22px,7vw,92px);isolation:isolate;background:radial-gradient(circle at 78% 22%,rgba(214,173,109,.22),transparent 21rem),radial-gradient(circle at 88% 76%,rgba(255,255,255,.08),transparent 17rem),linear-gradient(135deg,#351722 0%,#572636 48%,#6d3341 100%)}.login-screen:before{content:"";position:fixed;z-index:-1;right:clamp(30px,9vw,150px);top:50%;width:min(43vw,560px);aspect-ratio:1;transform:translateY(-50%) rotate(-4deg);border-radius:50%;background:url("assets/logo-aan-yesi.png") center/cover no-repeat;opacity:.075;filter:sepia(.2)}.login-screen:after{content:"";position:fixed;z-index:-2;inset:0;background:radial-gradient(circle,rgba(239,207,151,.28) 1.4px,transparent 1.8px) 0 0/30px 30px;mask-image:linear-gradient(90deg,transparent 35%,#000 72%,transparent 100%);opacity:.34}.login-screen[hidden]{display:none}.login-card{position:relative;width:min(540px,100%);margin:auto 0;padding:clamp(24px,3.5vw,38px);background:linear-gradient(155deg,#fffdf9,#fff8f2);border:1px solid rgba(235,211,178,.8);border-radius:5px 42px 5px 42px;box-shadow:0 28px 80px rgba(24,8,14,.32),0 0 0 7px rgba(255,255,255,.035);text-align:center}.login-card:before{content:"";position:absolute;inset:12px;border:1px solid rgba(198,154,88,.18);border-radius:3px 31px 3px 31px;pointer-events:none}.login-card>*{position:relative}.login-card>img{display:block;width:96px;height:96px;margin:0 auto 12px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 1px #d8b87f,0 8px 22px rgba(78,38,52,.12)}.login-card>.eyebrow{color:#9a6c32}.login-card h1{margin:4px 0;color:#4b2935;font-size:2.5rem}.login-card>p{margin:0 0 18px;color:var(--muted)}.profile-switch{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:5px;margin-bottom:16px;border:1px solid #e1d3cc;border-radius:999px;background:#f4ebe6}.profile-switch button{min-height:42px;border:0;border-radius:999px;background:transparent;color:#725f66;font-weight:700}.profile-switch button.active{background:#7d394d;color:#fff;box-shadow:0 5px 14px rgba(76,31,44,.16)}.login-card .field{text-align:left}.login-card .field input{width:100%;font-size:1.15rem;letter-spacing:.18em;text-align:center}.login-help,.login-local-note{display:block;color:var(--muted);font-size:.78rem}.login-error{min-height:20px;margin-top:7px;color:#9b3d3d;font-size:.8rem}.login-submit{width:100%;min-height:48px;margin:5px 0 14px}.logout-button{position:relative;z-index:1;margin:10px 8px 0;padding:8px 10px;border:1px solid rgba(222,190,140,.25);border-radius:3px 10px 3px 10px;background:rgba(255,255,255,.04);color:#cfbec3;text-align:left;font-size:.75rem}.logout-button:hover{background:rgba(255,255,255,.09);color:#fff}.security-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.forgot-pin{display:block;margin:-5px auto 12px}.modal-copy{color:var(--muted);margin:-8px 0 16px}.recovery-input{text-align:center;letter-spacing:.14em}.recovery-code-modal{text-align:center}.recovery-code{display:block;margin:18px 0;padding:16px;border:1px dashed #c69a58;border-radius:12px;background:#fff8e9;color:#4b2935;font:700 1.35rem ui-monospace,monospace;letter-spacing:.13em}.recovery-code-modal .modal-actions{justify-content:center}

.app{grid-template-columns:270px minmax(0,1fr)}

aside{
  background:
    linear-gradient(180deg,rgba(255,255,255,.035),transparent 30%),
    #3c1f2b;
  padding:24px 20px 18px;
  overflow-x:hidden;
  overflow-y:auto;
  scrollbar-width:none;
}
aside::-webkit-scrollbar{width:0;height:0}

aside:before,aside:after{
  content:"";
  position:absolute;
  border:1px solid rgba(198,154,88,.2);
  border-radius:50%;
  pointer-events:none;
}
aside:before{width:230px;height:230px;left:-128px;top:-80px}
aside:after{width:290px;height:290px;right:-210px;bottom:-80px}

.brand{margin:0 8px 16px;position:relative;z-index:1;gap:7px;display:flex;flex-direction:column;align-items:center}
.mark{
  width:48px;height:48px;border-radius:50%;
  border:1px solid rgba(225,193,142,.55);
  color:#e1c18e;background:rgba(255,255,255,.04);
}
.brand small{color:#cab8bd;text-transform:uppercase;letter-spacing:.16em;font-size:.66rem;margin-top:4px}
.brand-emblem-wrap{width:122px;height:122px;border-radius:50%;overflow:hidden;background:#fff;box-shadow:0 0 0 1px rgba(222,190,140,.42),0 10px 26px rgba(20,8,13,.22)}
.brand-emblem{display:block;width:122%;height:122%;max-width:none;object-fit:cover;transform:translate(-9%,-9%)}
.couple-logo{display:inline-flex;align-items:center;gap:.13em;white-space:nowrap;font-family:"Segoe Script","Brush Script MT",Georgia,cursive;font-weight:400;line-height:1.08;letter-spacing:0}
.couple-logo span{position:relative;z-index:2}
.couple-logo b{position:relative;z-index:1;color:#d6ad6d;font-family:Georgia,"Times New Roman",serif;font-style:italic;font-weight:400;line-height:1;transform:rotate(-8deg);margin:0 .04em;text-shadow:0 1px 0 rgba(255,255,255,.08)}
.couple-logo-side{font-size:1.55rem;color:#fff}
.couple-logo-side b{font-size:1.12em}

nav{gap:3px;position:relative;z-index:1}
.nav-btn{
  color:#ccbfc3;padding:11px 14px;border-radius:4px;
  border-left:2px solid transparent;
  transition:background .2s ease,color .2s ease,border-color .2s ease;
}
.nav-btn span:first-child{color:#c69a58;font-family:Georgia,serif}
.nav-btn:hover,.nav-btn.active{
  background:linear-gradient(90deg,rgba(255,255,255,.09),rgba(255,255,255,.025));
  color:#fff;border-left-color:#d3ab6e;
}
.date-card{position:relative;z-index:1;border-top:1px solid rgba(226,195,145,.2);padding-top:16px}
.date-card small{color:#bfaeb3;text-transform:uppercase;letter-spacing:.12em;font-size:.67rem}
.date-card strong{font-weight:400;color:#fff;font-size:1.05rem;margin:8px 0}
.date-card span{color:#e3c38f}
.connection-status{position:relative;z-index:1;display:flex;align-items:center;gap:7px;margin:10px 8px 0;color:#c9d7d2;font-size:.72rem}.connection-status i{width:8px;height:8px;border-radius:50%;background:#73c69f;box-shadow:0 0 0 3px rgba(115,198,159,.13)}.connection-status.offline{color:#e3c38f}.connection-status.offline i{background:#e0a85a;box-shadow:0 0 0 3px rgba(224,168,90,.14)}

main{padding:46px 52px 70px;max-width:1500px}
.topbar{
  min-height:180px;margin-bottom:24px;padding:28px 34px;
  color:white;border-radius:2px 42px 2px 42px;
  background:
    radial-gradient(circle at 91% 18%,rgba(255,255,255,.1) 0 1px,transparent 2px) 0 0/14px 14px,
    linear-gradient(120deg,#5e2a3a 0%,#3b1f2b 68%,#2e1821 100%);
  box-shadow:0 24px 60px rgba(60,31,43,.14);
  position:relative;overflow:hidden;
}
.topbar:after{
  content:"";position:absolute;width:240px;height:240px;border:1px solid rgba(222,188,133,.28);
  border-radius:50%;right:-55px;top:-95px;box-shadow:0 0 0 18px rgba(222,188,133,.045),0 0 0 42px rgba(222,188,133,.035)
}
.topbar>div{position:relative;z-index:1}
.topbar .eyebrow{color:#dfc08e;font-family:Georgia,serif;text-transform:none;letter-spacing:.15em;font-style:italic;font-weight:400}
.topbar h1{font-size:3.15rem;color:#fff;margin:8px 0 8px}
.couple-logo-hero{font-size:3.65rem!important;letter-spacing:0!important}
.couple-logo-hero b{font-size:.82em;margin:0 .08em}
.header-note{color:#d9cbd0;margin:0;font-size:.92rem}
.pill{
  min-width:170px;background:rgba(255,255,255,.055);color:white;border:1px solid rgba(224,190,135,.38);
  border-radius:50%;aspect-ratio:1;display:flex;flex-direction:column;justify-content:center;align-items:center;
  padding:18px;text-align:center;
}
.pill small{display:block;color:#d9bd8e;text-transform:uppercase;letter-spacing:.15em;font-size:.62rem;margin-bottom:8px}
.pill strong{font-family:Georgia,serif;font-size:1.08rem;font-weight:400;letter-spacing:.08em}

.grid{gap:20px}.stats{margin-bottom:20px}
.card{
  border:1px solid rgba(116,75,87,.13);border-radius:3px 24px 3px 24px;
  background:rgba(255,253,249,.94);box-shadow:0 8px 30px rgba(58,31,42,.045);padding:24px;
}
.card:hover{border-color:rgba(138,64,84,.22)}
.stats>.card{position:relative;overflow:hidden;min-height:132px}
.stats>.card:after{content:"";position:absolute;left:0;bottom:0;width:42px;height:2px;background:#c69a58}
.stat-label{text-transform:uppercase;letter-spacing:.1em;font-size:.72rem;color:#8b7a7f}
.stat-value{font-size:2rem;color:#492633;margin:10px 0 4px}
.stat-note{font-size:.8rem}
.accent{background:#7b374b;border-color:#7b374b;color:#fff}
.accent .stat-value{color:#fff}.accent:after{background:#e2c18d!important}

.card-title{margin-bottom:20px}
.card-title h2,.section-head h2{font-size:1.45rem;color:#432531;font-weight:400}
.card-title a{color:#8a4054;text-transform:uppercase;letter-spacing:.08em;font-size:.7rem}
.progress-track{height:7px;background:#efe5df}.progress-bar{background:linear-gradient(90deg,#8a4054,#c69a58)}
.progress-row{font-size:.82rem;margin-top:10px}

.task{padding:15px 0;gap:13px}.task b{font-family:Georgia,serif;font-size:.98rem;font-weight:600;color:#432531}.task small{font-size:.78rem}
.check{border:1.5px solid #bbaeb1;border-radius:50%;width:22px;height:22px}
.check.done{background:#874055;border-color:#874055}
.tag{border-radius:999px;background:#f4ece7;color:#79666c}.tag.soon{background:#f7e7d8;color:#985b39}

.donut-box{position:relative;width:145px;height:145px;flex:0 0 145px}
.donut{position:absolute;inset:0;width:100%;height:100%;background:conic-gradient(#8a4054 0 40%,#c69a58 40% 73%,#eadfd8 73%)}
.donut:after{background:#fffdf9}.donut-center{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;line-height:1.15;pointer-events:none}.donut-center strong{color:#4a2834;font-size:1.75rem}.donut-center small{max-width:76px;font-size:.66rem;margin-top:4px}
.legend div{padding:11px 0}.legend b{color:#4a2834}
.quote{background:#3c1f2b!important;color:#fff;border:0;position:relative;overflow:hidden}
.quote:after{content:"&";position:absolute;right:18px;bottom:-28px;font:italic 6rem Georgia,serif;color:rgba(215,179,120,.13)}
.quote p{font-style:italic;font-weight:400;color:#fff}.quote small{color:#d8bd91}

.section-head{margin:6px 0 22px;padding-bottom:18px;border-bottom:1px solid #e8dcd5}
.section-head h2{font-size:1.8rem}.section-head p{font-size:.88rem}
.section-actions,.row-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.primary{background:#7d394d;border-radius:3px 13px 3px 13px;padding:11px 18px;box-shadow:0 7px 18px rgba(125,57,77,.13)}
.primary:hover{background:#5e293a}.secondary{border-radius:3px 11px 3px 11px;background:#fffaf5}
.filter{border-radius:999px;background:#fffaf6;padding:8px 14px;font-size:.83rem}.filter.active{border-color:#9a586b;color:#743348;background:#f7e9eb}
.schedule-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:-4px 0 16px}.schedule-summary>div{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fffaf6;border:1px solid #e6d8d1;border-radius:3px 14px 3px 14px;padding:12px 14px}.schedule-summary span{color:var(--muted);font-size:.875rem}.schedule-summary strong{font:400 1.35rem Georgia,serif;color:#713448}
.privacy-toggle,.privacy-icon{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #dbc9c1;background:#fffaf6;color:#713448;border-radius:999px;padding:9px 13px;transition:background .2s ease,color .2s ease,border-color .2s ease;white-space:nowrap}
.privacy-icon{width:38px;height:38px;padding:8px}
.privacy-toggle:hover,.privacy-icon:hover{background:#f4e6e7;border-color:#b98291}
.privacy-toggle svg,.privacy-icon svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.eye-slash{opacity:0;transition:opacity .18s ease}.is-hidden .eye-slash{opacity:1}
.private-money{transition:color .18s ease,text-shadow .18s ease,filter .18s ease}
body.budget-hidden .private-money{color:transparent!important;text-shadow:0 0 9px rgba(74,40,52,.65);user-select:none}
body.budget-hidden input.private-money{pointer-events:none;caret-color:transparent;background:#f5eeea;text-shadow:0 0 9px rgba(74,40,52,.55)}
body.budget-hidden .budget-alert{color:transparent!important;text-shadow:0 0 9px rgba(74,40,52,.55);user-select:none}
body.budget-hidden .accent .private-money,body.budget-hidden .budget-total .private-money{text-shadow:0 0 9px rgba(255,255,255,.75)}
body.budget-hidden .private-proof .proof-thumb{display:none}
body.budget-hidden .private-proof .proof-list[data-count]:after{content:"Bukti pembayaran disembunyikan";display:block;color:#8b7a7f;font-size:.75rem;padding-top:3px}

.list-card,table{border-radius:3px 22px 3px 22px;border-color:#e7dbd5;background:#fffdf9;box-shadow:0 12px 36px rgba(57,31,42,.045)}
.list-row{grid-template-columns:42px minmax(180px,1fr) minmax(125px,auto) minmax(165px,190px);padding:17px 20px}.list-row h3{font-family:Georgia,serif;font-size:1rem;color:#422630}.status{background:#f2e8eb;color:#73394b;border-radius:999px;font-size:.875rem}.status.todo{background:#f2eeeb;color:#756b6e}.status.done{background:#e8f1eb;color:#3e684e}.status.soon,.tag.soon{background:#f8ead9;color:#925832}.status.overdue,.tag.overdue{background:#f8e2e1;color:#9b3d3d}.status.unscheduled,.tag.unscheduled{background:#eee9e7;color:#72676a}.task-date{display:grid;gap:4px;color:var(--muted);font-size:.75rem}.task-date span{text-transform:uppercase;letter-spacing:.06em}.task-date input{width:100%;min-height:39px;border:1px solid #dfd1ca;background:#fffaf6;color:var(--ink);border-radius:3px 9px 3px 9px;padding:7px 9px;font-size:.875rem}.task-date input:focus{outline:2px solid rgba(138,64,84,.2);outline-offset:2px}
th{background:#f5ece8;color:#775f67;text-transform:uppercase;letter-spacing:.08em;font-size:.68rem}th,td{padding:15px 18px}
.budget-input{border-radius:3px 9px 3px 9px;background:#fffaf6;border-color:#e5d8d1}
.category-name-input{width:min(210px,100%);border:0;border-bottom:1px solid transparent;background:transparent;color:#432531;font:600 .95rem Georgia,serif;padding:6px 2px}.category-name-input:focus{outline:2px solid rgba(138,64,84,.2);outline-offset:2px;border-radius:3px}.attention-notice{margin:-10px 0 12px;padding:9px 11px;border-left:3px solid #c69a58;background:#fff8ec;color:#765d38;font-size:.82rem}
.budget-limit-editor{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:12px;padding:16px 18px;background:#fffaf6;border:1px solid #e6d8d1;border-radius:3px 16px 3px 16px}.budget-limit-editor>label{display:grid;gap:3px;color:#492833;font-weight:700}.budget-limit-editor small{color:var(--muted);font-weight:400;font-size:.8rem}.money-editor{display:flex;align-items:center;gap:7px;border-bottom:1px solid #cbaea5;color:#713448}.money-editor input{width:180px;border:0;background:transparent;color:#492633;text-align:right;padding:7px 3px;font:400 1.25rem Georgia,serif}.money-editor input:focus{outline:2px solid rgba(138,64,84,.2);outline-offset:3px;border-radius:3px}
.budget-alert{display:none;margin-bottom:12px;border-radius:3px 12px 3px 12px;padding:11px 14px;font-size:.875rem}.budget-alert.safe{display:block;background:#eef5ef;border:1px solid #d6e6d9;color:#42644c}.budget-alert.over{display:block;background:#fae8e6;border:1px solid #edc9c5;color:#963f3f}
.budget-total{background:#3c1f2b;border-radius:3px 16px 3px 16px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;justify-content:stretch}.budget-total>div{display:grid;gap:4px}.budget-total span{color:#cbbbc0;font-size:.75rem}.budget-total b{font-size:1rem}
.vendor-card{display:flex;flex-direction:column}.vendor-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.vendor-card .eyebrow{color:#a4773e}.vendor-card h3{font-family:Georgia,serif;font-size:1.28rem;color:#492833}.contact-line{margin:0 0 10px;color:var(--muted);font-size:.875rem;overflow-wrap:anywhere}.text-button{border:0;background:transparent;color:#7d394d;padding:5px;font-size:.8rem}.text-button:hover{text-decoration:underline}.text-button.danger{color:#a14444}.vendor-control{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--line);font-size:.875rem}.vendor-control span{color:var(--muted)}.vendor-control select{min-width:0;border:1px solid #dfd1ca;background:#fffaf6;color:var(--ink);border-radius:3px 9px 3px 9px;padding:8px}.vendor-due{display:flex;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding-top:9px;font-size:.875rem}.vendor-due span{color:var(--muted)}.vendor-due strong{font-weight:600;color:#492833}
.category-chip{display:inline-block;width:max-content;max-width:100%;margin:0 0 10px;padding:5px 9px;border-radius:999px;background:#f4e7d3;color:#76552a;font-size:.75rem;overflow-wrap:anywhere}
.countdown-time{font-variant-numeric:tabular-nums;white-space:nowrap}.countdown-target{margin-top:6px;color:#d9c1c8;font-size:.68rem;letter-spacing:.035em}
.guest-stats{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:20px}.guest-stats .card{min-height:124px}
.target-editor{display:flex;align-items:baseline;gap:7px;margin:8px 0 5px}.target-editor input{width:96px;border:0;border-bottom:1px solid #d8c3bb;background:transparent;color:#492633;font:400 2rem Georgia,serif;padding:2px 3px}.target-editor input:focus{outline:2px solid rgba(138,64,84,.22);outline-offset:3px;border-radius:3px}.target-editor span{color:var(--muted);font-size:.8rem}
.guest-layout{grid-template-columns:minmax(0,1.45fr) minmax(280px,.72fr);align-items:start}
.guest-tools{display:flex;align-items:center;gap:10px;justify-content:space-between;margin-bottom:12px;flex-wrap:wrap}.guest-tools input{min-width:230px;flex:1;border:1px solid #dfd1ca;background:#fffdf9;border-radius:3px 12px 3px 12px;padding:11px 14px;color:var(--ink)}
.guest-filters{display:flex;gap:6px;flex-wrap:wrap}.guest-filter{border:1px solid #dfd1ca;background:#fffaf6;color:#796b70;border-radius:999px;padding:9px 12px;font-size:.78rem}.guest-filter.active{background:#7d394d;border-color:#7d394d;color:#fff}
.guest-list{background:#fffdf9;border:1px solid #e7dbd5;border-radius:3px 22px 3px 22px;overflow:hidden;box-shadow:0 12px 36px rgba(57,31,42,.045)}
.guest-row{display:grid;grid-template-columns:44px minmax(0,1fr) 160px auto;gap:12px;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line)}.guest-row:last-child{border-bottom:0}
.guest-avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#f1e4e6;color:#7d394d;font:600 1rem Georgia,serif}.guest-name h3{font:600 1rem Georgia,serif;margin:0;color:#432531}.guest-name p{margin:3px 0 0;color:var(--muted);font-size:.78rem}.guest-name small{display:block;margin-top:4px;color:#8a6f77;font-size:.75rem}
.guest-status{width:100%;border:1px solid #dfd1ca;background:#fffaf6;border-radius:3px 10px 3px 10px;padding:9px;color:var(--ink);font-size:.8rem}.guest-delete{border:0;background:transparent;color:#9a4b52;padding:9px;font-size:.78rem}.guest-delete:hover{text-decoration:underline}
.guest-list .empty strong,.guest-list .empty span{display:block}.guest-list .empty strong{font-family:Georgia,serif;color:#51303b;margin-bottom:5px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.document-progress{border:1px solid #dfd1ca;background:#fffaf6;color:#713448;border-radius:999px;padding:5px 9px;font-size:.8rem}.document-item{display:grid;grid-template-columns:28px minmax(0,1fr);gap:11px;padding:14px 0;border-top:1px solid var(--line)}.document-item:first-child{border-top:0}.document-item b,.document-item small{display:block}.document-item b{font-family:Georgia,serif;color:#432531}.document-item small{color:var(--muted);margin:4px 0 9px;font-size:.78rem}.document-item .status{display:inline-block;margin-bottom:10px}.document-item .task-date{max-width:190px}
.item-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.item-heading h3{margin:0}.item-heading .row-actions{flex:0 0 auto}
.proof-section{margin-top:9px}.proof-list{display:flex;gap:7px;flex-wrap:wrap}.proof-thumb{position:relative;width:48px;height:48px}.proof-thumb>button:first-child{width:48px;height:48px;padding:0;border:1px solid #dbc9c1;border-radius:3px 10px 3px 10px;overflow:hidden;background:#f4ebe6}.proof-thumb img{width:100%;height:100%;object-fit:cover;display:block}.proof-remove{position:absolute;right:-5px;top:-7px;width:20px;height:20px;border:0;border-radius:50%;background:#8b3d4b;color:white;display:grid;place-items:center;padding:0;line-height:1}.proof-add{border:0;background:transparent;color:#7d394d;padding:7px 0 0;font-size:.78rem}.proof-add:hover{text-decoration:underline}.proof-viewer{padding:16px;display:grid;justify-items:center;gap:12px}.proof-viewer img{display:block;max-width:100%;max-height:70dvh;border-radius:3px 18px 3px 18px}.proof-viewer p{margin:0;color:var(--muted);font-size:.85rem}.global-notice{position:fixed;z-index:100;right:20px;bottom:20px;max-width:min(390px,calc(100% - 28px));padding:12px 15px;border-radius:3px 13px 3px 13px;background:#3c1f2b;color:#fff;box-shadow:0 14px 38px rgba(47,24,33,.3);opacity:0;transform:translateY(12px);pointer-events:none;transition:.2s ease}.global-notice.show{opacity:1;transform:none}.global-notice.error{background:#8b353b}

.timeline{border-left-color:#d9b87f}.milestone:before{background:#7c384c;border-color:#fbf7f2;box-shadow:0 0 0 1px #cfab6e}.milestone h3{font-family:Georgia,serif;color:#492833;font-size:1.1rem}.milestone time{color:#9a6c32;text-transform:uppercase;letter-spacing:.08em;font-size:.7rem}
.milestone.complete{opacity:.68}.milestone.complete:before{background:#56705c}.timeline-status{font-weight:700}.timeline-status.overdue{color:#9b3d3d}.timeline-status.soon{color:#925832}.timeline-status.done{color:#456a50}

.data-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.data-grid .card{display:flex;flex-direction:column;align-items:flex-start}.data-grid h3{font:400 1.25rem Georgia,serif;color:#492833;margin:7px 0}.data-grid p{color:var(--muted);font-size:.875rem;flex:1}.file-button{display:inline-flex;align-items:center;cursor:pointer}.security-state{display:inline-block;background:#f8ead9;color:#925832;border-radius:999px;padding:7px 10px;font-size:.78rem}.backup-status{display:none;margin-top:14px;padding:12px 14px;border-radius:3px 12px 3px 12px;font-size:.875rem}.backup-status.success{display:block;background:#eef5ef;border:1px solid #d6e6d9;color:#42644c}.backup-status.error{display:block;background:#fae8e6;border:1px solid #edc9c5;color:#963f3f}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.storage-usage{display:block;margin-top:12px;color:var(--muted);font-size:.75rem}.install-app{margin-top:12px}.transaction-panel{margin-top:20px;padding:20px;background:#fffdf9;border:1px solid #e7dbd5;border-radius:3px 22px 3px 22px;box-shadow:0 12px 36px rgba(57,31,42,.045)}.transaction-panel .card-title p{margin:4px 0 0;color:var(--muted);font-size:.82rem}.transaction-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:16px;padding:14px 0;border-top:1px solid var(--line)}.transaction-row:first-child{border-top:0}.transaction-row time{color:#9a6c32;text-transform:uppercase;letter-spacing:.06em;font-size:.7rem}.transaction-row h3{margin:3px 0;font:600 1rem Georgia,serif;color:#432531}.transaction-row p{margin:0;color:var(--muted);font-size:.78rem}.transaction-row>strong{font:600 1rem Georgia,serif;color:#492833;white-space:nowrap}

dialog{border-radius:3px 28px 3px 28px;background:#fffaf6}dialog::backdrop{background:rgba(47,24,33,.62)}.modal{padding:30px}.modal h2{font-weight:400;color:#4b2935}.field input,.field select{border-radius:3px 10px 3px 10px;background:#fffdf9;border-color:#e3d4cd}

@media(max-width:1050px){main{padding:34px 30px 60px}.topbar h1{font-size:2.6rem}.pill{min-width:145px}.overview,.guest-layout{grid-template-columns:1fr}.mini-grid,.guest-stats,.data-grid{grid-template-columns:1fr 1fr}}

@media(min-width:761px) and (max-height:720px){
  aside{padding-top:16px;padding-bottom:12px}
  .brand{margin-bottom:9px}.brand-emblem-wrap{width:88px;height:88px}.brand small{font-size:.58rem}
  .nav-btn{padding-top:8px;padding-bottom:8px}.date-card{padding-top:10px}.date-card strong{font-size:.95rem}
}

@media(max-width:760px){
  html,body{max-width:100%;overflow-x:hidden}
  body{background:#faf5f0}.app{display:block;padding-bottom:0}
  aside{position:sticky;z-index:50;top:0;height:68px;padding:10px 14px;display:flex;align-items:center;overflow:visible;border-bottom:1px solid rgba(220,183,125,.22);box-shadow:0 6px 22px rgba(48,23,33,.13)}
  aside:before,aside:after{display:none}.brand{margin:0;gap:0;align-items:flex-start;flex-direction:row;flex:1}.brand-emblem-wrap{width:46px;height:46px;flex:0 0 46px;box-shadow:0 0 0 1px rgba(222,190,140,.36)}.brand small{display:block;font-size:.75rem;margin:14px 0 0 10px;letter-spacing:.11em}
  .connection-status{position:fixed;z-index:80;right:12px;bottom:12px;margin:0;padding:8px 11px;border-radius:999px;background:#3c1f2b;box-shadow:0 8px 24px rgba(48,23,33,.2);font-size:.7rem}
  .logout-button{position:absolute;right:76px;top:13px;margin:0;min-height:42px;padding:7px 10px;font-size:.7rem}.login-screen{justify-content:center;padding:18px 14px}.login-screen:before{right:-32vw;width:105vw;opacity:.055}.login-screen:after{mask-image:linear-gradient(180deg,#000,transparent 72%)}.login-card{width:min(520px,100%);margin:auto;padding:24px 20px}.login-card>img{width:82px;height:82px}.login-card h1{font-size:2.15rem}
  .mobile-menu{display:inline-flex;align-items:center;justify-content:center;min-width:48px;min-height:44px;background:rgba(255,255,255,.07);color:#fff;border:1px solid rgba(222,190,140,.36);border-radius:3px 12px 3px 12px;font-size:.8rem}
  nav{display:none;position:absolute;z-index:60;left:10px;right:10px;top:60px;bottom:auto;padding:10px;grid-template-columns:1fr 1fr;gap:6px;border:1px solid rgba(222,190,140,.24);border-radius:3px 18px 3px 18px;background:#3c1f2b;box-shadow:0 18px 45px rgba(38,16,24,.3)}
  nav.open{display:grid}
  .nav-btn{display:flex;flex-direction:row;gap:9px;align-items:center;text-align:left;min-height:46px;padding:9px 11px;border:0;border-left:2px solid transparent;border-radius:3px 10px 3px 10px;font-size:.82rem;white-space:normal}
  .nav-btn span:first-child{font-size:1rem;width:20px}.nav-btn:hover,.nav-btn.active{border-left-color:#d4ad70;border-top:0;background:rgba(255,255,255,.08)}
  main{padding:16px 14px 36px}.topbar{min-height:150px;padding:21px 18px;border-radius:2px 26px 2px 26px;margin-bottom:14px}.topbar h1{font-size:2.25rem}.couple-logo-hero{font-size:2.45rem!important}.header-note{font-size:.8rem;max-width:185px}.pill{display:flex;min-width:101px;width:101px;height:101px;padding:9px}.pill strong{font-size:.82rem}.pill small{font-size:.7rem}
  .stats{grid-template-columns:1fr 1fr;gap:10px}.stats>.card{min-height:116px}.card{padding:17px;border-radius:2px 17px 2px 17px}.stat-value{font-size:1.45rem}.stat-label{font-size:.75rem}.stat-note{font-size:.75rem}
  .section-head{align-items:flex-start;flex-wrap:wrap;gap:12px}.section-head h2{font-size:1.5rem}.section-head p{font-size:.85rem}.primary,.secondary,.privacy-toggle,.filter{min-height:44px}.primary{font-size:.82rem;padding:10px 13px}.privacy-toggle{font-size:.75rem;padding:8px 11px}.toolbar{gap:7px}.filter{font-size:.78rem}
  .schedule-summary{grid-template-columns:1fr}.schedule-summary>div{min-height:48px}.list-row{grid-template-columns:38px minmax(0,1fr);padding:14px}.list-row .status,.list-row .due,.list-row .task-date{grid-column:2}.task-date input{min-height:44px}.check{width:28px;height:28px}.mini-grid{grid-template-columns:1fr}.donut-wrap{align-items:center}.quote{margin-top:12px}
  .budget-limit-editor{align-items:flex-start;flex-direction:column}.money-editor{width:100%}.money-editor input{width:100%}.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:7px}.table-wrap table{min-width:940px}.budget-input{min-height:44px}.budget-total{grid-template-columns:1fr 1fr}.transaction-row{grid-template-columns:minmax(0,1fr) auto}.transaction-row .row-actions{grid-column:1/-1;justify-content:flex-end}
  #guests .stats{grid-template-columns:1fr!important}.guest-tools{display:block}.guest-tools input{width:100%;min-width:0;min-height:44px;margin-bottom:9px}.guest-filters{overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}.guest-filter{white-space:nowrap;min-height:42px}.guest-row{grid-template-columns:38px minmax(0,1fr);gap:9px;padding:13px}.guest-status,.guest-row .row-actions{grid-column:2}.guest-status{min-height:44px}.guest-row .row-actions{justify-content:flex-end}.form-grid{grid-template-columns:1fr}.data-grid{grid-template-columns:1fr}.modal{padding:22px}.modal-actions button{min-height:44px}dialog{max-height:88dvh;overflow-y:auto}
}

@media(max-height:760px){.login-screen{padding-top:14px;padding-bottom:14px}.login-card{margin:0}.login-card>img{width:72px;height:72px}.login-card h1{font-size:2rem}.login-card>p{margin-bottom:12px}.profile-switch{margin-bottom:10px}.login-card .field{margin:9px 0}.login-submit{margin-bottom:9px}}

@media(max-width:430px){.brand small{display:none}.topbar h1{font-size:2rem}.couple-logo-hero{font-size:2.08rem!important}.topbar{padding:19px 16px}.pill{width:88px;min-width:88px;height:88px}.stats{grid-template-columns:1fr 1fr}.donut-wrap{flex-direction:column}.donut-box{width:132px;height:132px;flex-basis:132px}.budget-total{justify-content:space-between;gap:8px;flex-wrap:wrap}.budget-total span,.budget-total b{width:46%}}
@media(max-width:360px){.brand small{display:none}.topbar{display:block}.topbar .pill{display:none}.stats,.guest-stats{grid-template-columns:1fr}.couple-logo-hero{font-size:2.2rem!important}nav{grid-template-columns:1fr}}

.login-screen:before{-webkit-mask-image:linear-gradient(to bottom,#000 0 68%,rgba(0,0,0,.82) 70%,transparent 76%);mask-image:linear-gradient(to bottom,#000 0 68%,rgba(0,0,0,.82) 70%,transparent 76%)}

.savings-target-editor{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px;padding:17px 19px;background:linear-gradient(120deg,#fff8e9,#fffdf9);border:1px solid #ead6b4;border-radius:3px 18px 3px 18px}.savings-target-editor>label{display:grid;gap:3px;color:#492833;font-weight:700}.savings-target-editor small{color:var(--muted);font-size:.82rem;font-weight:400}.savings-stats{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:18px}.savings-progress-card{margin-bottom:18px}.savings-progress-card .card-title{align-items:flex-start}.savings-progress-card .card-title p{margin:5px 0 0;color:var(--muted);font-size:.84rem}.savings-progress-card .card-title>strong{font:600 1.65rem Georgia,serif;color:#713448}.savings-progress-bar{background:linear-gradient(90deg,#8a4054,#c69a58)}.savings-couple{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:18px}.savings-couple>div{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:14px 16px;border:1px solid #eadfd8;border-radius:3px 14px 3px 14px;background:#fffaf6}.savings-couple span{color:#713448;font-weight:700}.savings-couple strong{font-family:Georgia,serif}.savings-couple small{grid-column:1/-1;color:var(--muted);font-size:.78rem}.savings-couple small.done{color:#36745e;font-weight:700}.savings-history{margin-top:0}.savings-entry{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:18px;padding:16px 0;border-bottom:1px solid #eadfd8}.savings-entry:last-child{border-bottom:0}.savings-entry time{color:#9a6c32;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.savings-entry h3{margin:3px 0;font-size:1rem}.savings-entry p{margin:0;color:var(--muted);font-size:.8rem}.savings-entry>strong{font:600 1.1rem Georgia,serif;color:#713448}.savings-entry .row-actions{justify-content:flex-end}

@media(max-width:1050px){.savings-stats{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.savings-target-editor{align-items:flex-start;flex-direction:column}.savings-target-editor .money-editor{width:100%}.savings-target-editor .money-editor input{width:100%}.savings-entry{grid-template-columns:minmax(0,1fr) auto}.savings-entry .row-actions{grid-column:1/-1}.savings-couple{grid-template-columns:1fr}}
@media(max-width:430px){.savings-stats{grid-template-columns:1fr}.savings-entry{gap:10px}.savings-entry>strong{font-size:1rem}}

.saving-proof-field{padding:13px 14px;border:1px dashed #d8b87f;border-radius:3px 13px 3px 13px;background:#fffaf1}.saving-proof-field input[type="file"]{width:100%;padding:9px;background:#fff;border:1px solid #e4d7cf;border-radius:8px;color:#5b3a45}.saving-proof-field input[type="file"]::file-selector-button{margin-right:10px;padding:8px 11px;border:0;border-radius:7px;background:#7d394d;color:#fff;font-weight:700;cursor:pointer}.saving-proof-field>small{color:var(--muted);font-size:.75rem}
