*{box-sizing:border-box}body{color:#1f1f1f;background:#fafaf7;margin:0;font-family:-apple-system,Segoe UI,sans-serif}button{cursor:pointer}.center{flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:100vh;display:flex}.app{min-height:100vh;display:flex}.topbar{display:none}.sidebar{background:#f3f1ea;border-right:1px solid #e5e3da;flex-direction:column;flex-shrink:0;gap:4px;width:220px;padding:20px 14px;display:flex}.brand{padding:6px 10px 18px;font-size:20px;font-weight:600}.nav-item{color:#5f5e5a;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;font-size:15px;text-decoration:none;display:flex;position:relative}.nav-item:hover{background:#eceae1}.nav-item.active{color:#1f1f1f;background:#fff;border:1px solid #e5e3da;font-weight:600}.nav-icon{font-size:18px}.new-badge{color:#fff;background:#e2574c;border-radius:10px;margin-left:auto;padding:1px 7px;font-size:11px;font-weight:600;line-height:1.6}.logout{color:#5f5e5a;text-align:left;background:0 0;border:1px solid #e5e3da;border-radius:8px;margin-top:8px;padding:10px 12px}.logout:first-of-type{margin-top:auto}.content{box-sizing:border-box;flex:1;width:100%;max-width:900px;padding:28px 32px;overflow-x:hidden}.eyebrow{color:#999;margin:0 0 4px;font-size:13px}.section-head{align-items:center;gap:8px;display:flex}.hint{color:#aaa;font-size:12px}section{margin-bottom:32px}h1{font-size:22px}h2{font-size:18px}.empty{color:#999;font-size:14px}.add-pill{color:#555;cursor:pointer;background:#f1efe9;border:none;border-radius:28px;width:100%;margin-top:14px;padding:14px;font-size:15px;display:block}.add-pill:hover{background:#eae8e0}.clickable{cursor:pointer;transition:background .12s,transform 80ms}.clickable:hover{background:#f6f5f0}.clickable:active{transform:scale(.99)}.home-post{background:#faf9f5;border-radius:10px;gap:12px;margin-bottom:8px;padding:10px;display:flex}.home-post img{object-fit:cover;border-radius:8px;flex-shrink:0;width:56px;height:56px}.hp-content{margin:0 0 4px;font-size:14px}.hp-meta{color:#999;margin:0;font-size:12px}.dday-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;display:grid}.dday-card{background:#f3f1ea;border-radius:8px;padding:14px}.dday-card.clickable:hover{background:#ece9df}.dday-label{color:#888;margin:0 0 6px;font-size:13px}.dday-num{margin:0;font-size:22px;font-weight:600}.dday-date{color:#aaa;margin:6px 0 0;font-size:12px}.up-item{border-bottom:1px solid #f0eee6;align-items:stretch;gap:12px;padding:10px 0;display:flex}.up-bar{background:#d4537e;border-radius:2px;flex-shrink:0;width:4px}.up-title{margin:0;font-size:15px;font-weight:500}.up-meta{color:#999;margin:3px 0 0;font-size:13px}.cal{max-width:760px}.cal-head{justify-content:center;align-items:center;gap:20px;margin:4px 0 18px;display:flex}.cal-head strong{font-size:20px;font-weight:600}.cal-head .nav{color:#999;background:0 0;border:none;padding:0 6px;font-size:22px}.cal-head .nav:hover{color:#333}.cal-grid-wrap{-webkit-user-select:none;user-select:none}.cal-wd-row{grid-template-columns:repeat(7,1fr);display:grid}.cal-wd{text-align:center;color:#9a9892;padding:6px 0 10px;font-size:12px;font-weight:500}.cal-wd.sun{color:#e2574c}.cal-wd.sat{color:#3b82c4}.cal-week{position:relative}.cal-week-cells{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.cal-cell{cursor:pointer;border:1.5px solid #0000;border-radius:10px;flex-direction:column;gap:2px;min-height:92px;padding:5px;display:flex;overflow:hidden}.cal-cell:hover{filter:brightness(.98)}.cal-cell.empty,.cal-cell.empty:hover{cursor:default;filter:none}.cal-cell.sel{border-color:#c9c7bf}.day-num{color:#3a3a38;align-self:flex-start;font-size:13px}.day-num.sun{color:#e2574c}.day-num.sat{color:#3b82c4}.day-num.today{color:#fff;background:#e2574c;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;display:inline-flex}.holi{color:#e2574c;white-space:nowrap;text-overflow:ellipsis;font-size:10px;line-height:1.15;overflow:hidden}.lane-space{flex-shrink:0}.cell-spend{color:#666;align-self:flex-end;margin-top:auto;font-size:10px}.bar-layer{pointer-events:none;position:absolute;left:0;right:0}.bar{color:#fff;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;pointer-events:auto;height:15px;padding:0 6px;font-size:11px;line-height:15px;position:absolute;overflow:hidden}.month-total{text-align:right;color:#666;margin-top:14px;font-size:14px}.month-total strong{color:#222;margin-left:6px;font-size:16px}.panel{background:#fff;border:1px solid #ececec;border-radius:16px;max-width:480px;margin-top:22px;padding:18px 20px}.panel h3{margin:0 0 14px;font-size:17px}.panel .empty{color:#aaa;font-size:14px}.agenda{cursor:pointer;align-items:stretch;gap:12px;padding:10px 0;display:flex}.agenda:hover{opacity:.7}.agenda-time{color:#555;flex-shrink:0;width:78px;padding-top:2px;font-size:13px}.agenda-bar{border-radius:2px;flex-shrink:0;width:4px}.agenda-title{font-size:15px;font-weight:600}.agenda-sub{color:#999;margin-top:2px;font-size:13px}.sched-form{flex-direction:column;gap:12px;display:flex}.sched-form input[type=text],.sched-form input[type=time],.sched-form input[type=date],.sched-form input[type=number],.sched-form select,.sched-form textarea{border:1px solid #e0ded6;border-radius:8px;padding:10px 12px;font-family:inherit;font-size:14px}.sched-form textarea{resize:vertical;min-height:60px}.sched-form .row{align-items:center;gap:8px;display:flex}.sched-form .chk{color:#444;align-items:center;gap:6px;font-size:14px;display:flex}.colors{gap:10px;display:flex}.colors .sw{cursor:pointer;border:2px solid #0000;border-radius:50%;width:28px;height:28px;padding:0}.colors .sw.on{border-color:#333}.actions{gap:8px;margin-top:4px;display:flex}.actions button{cursor:pointer;background:#fff;border:1px solid #e0ded6;border-radius:8px;padding:9px 16px;font-size:14px}.actions .primary{color:#fff;background:#e2574c;border-color:#e2574c}.actions .danger{color:#c0392b;border-color:#ecc}.led-section{border-top:1px solid #f0eee6;margin-top:22px;padding-top:14px}.led-section h4{justify-content:space-between;margin:0 0 8px;font-size:14px;display:flex}.led-day-sum{color:#1d7a52}.led-row{border-bottom:1px solid #f6f4ee;align-items:center;gap:8px;padding:6px 0;font-size:14px;display:flex}.led-label{flex:1}.led-amt{color:#555;white-space:nowrap}.led-row button{color:#bbb;cursor:pointer;background:0 0;border:none;font-size:15px}.led-form{gap:6px;margin-top:10px;display:flex}.led-form input[type=text]{border:1px solid #e0ded6;border-radius:8px;flex:1;padding:9px 10px;font-size:13px}.led-form input[type=number]{border:1px solid #e0ded6;border-radius:8px;width:110px;padding:9px 10px;font-size:13px}.led-form button{cursor:pointer;background:#fff;border:1px solid #e0ded6;border-radius:8px;padding:9px 14px;font-size:13px}.daily{max-width:600px}.write{background:#fff;border:1px solid #ececec;border-radius:14px;margin-bottom:24px;padding:14px}.write textarea{resize:vertical;box-sizing:border-box;border:none;outline:none;width:100%;min-height:60px;font-family:inherit;font-size:15px}.write-actions{align-items:center;gap:12px;margin-top:8px;display:flex}.file-btn{color:#3b82c4;cursor:pointer;font-size:14px}.file-count{color:#888;font-size:13px}.write-actions .primary{color:#fff;cursor:pointer;background:#e2574c;border:none;border-radius:8px;margin-left:auto;padding:8px 18px;font-size:14px}.write-actions .primary:disabled{opacity:.6}.post{background:#fff;border:1px solid #ececec;border-radius:14px;margin-bottom:18px;padding:16px}.post-highlight{border-radius:14px;transition:box-shadow .3s;box-shadow:0 0 0 3px #e2574c55}.post-head{align-items:center;gap:10px;margin-bottom:10px;display:flex}.post-date{color:#aaa;font-size:12px}.post-head .link{margin-left:auto}.link{color:#bbb;cursor:pointer;background:0 0;border:none;font-size:13px}.post-content{white-space:pre-wrap;margin:0 0 12px;font-size:15px;line-height:1.6}.comments{border-top:1px solid #f0f0f0;padding-top:10px}.comment{padding:4px 0;font-size:14px}.comment strong{margin-right:6px}.comment .link{font-size:14px}.comment-form{gap:8px;margin-top:8px;display:flex}.comment-form input{border:1px solid #e0ded6;border-radius:8px;flex:1;padding:8px 10px;font-size:14px}.comment-form button{cursor:pointer;background:#fff;border:1px solid #e0ded6;border-radius:8px;padding:8px 14px;font-size:14px}.carousel{margin-bottom:10px}.carousel-viewport{touch-action:pan-y;background:#f3f1ea;border-radius:10px;position:relative;overflow:hidden}.carousel-track{transition:transform .25s;display:flex}.carousel-track img{object-fit:cover;-webkit-user-select:none;user-select:none;flex:0 0 100%;width:100%;max-height:480px;display:block}.car-nav{color:#333;cursor:pointer;background:#ffffffd9;border:none;border-radius:50%;width:32px;height:32px;font-size:18px;position:absolute;top:50%;transform:translateY(-50%)}.car-nav.prev{left:8px}.car-nav.next{right:8px}.car-count{color:#fff;background:#00000080;border-radius:10px;padding:2px 8px;font-size:11px;position:absolute;top:8px;right:10px}.car-dots{justify-content:center;gap:6px;margin-top:8px;display:flex}.car-dots .dot{cursor:pointer;background:#d6d3ca;border-radius:50%;width:6px;height:6px}.car-dots .dot.on{background:#e2574c}.wedding{max-width:640px}.budget-summary{gap:10px;margin-bottom:18px;display:flex}.budget-summary div{background:#f3f1ea;border-radius:10px;flex-direction:column;flex:1;gap:4px;padding:12px 14px;display:flex}.budget-summary.four div{padding:10px 12px}.budget-summary span{color:#888;font-size:12px}.budget-summary strong{font-size:16px}.budget-summary.four strong{font-size:15px}.wed-item{background:#fff;border:1px solid #ececec;border-radius:12px;margin-bottom:12px;padding:14px}.wed-main{cursor:pointer}.wed-title{align-items:center;gap:8px;display:flex}.wed-title strong{font-size:16px}.wed-sub{color:#777;flex-wrap:wrap;gap:12px;margin-top:6px;font-size:13px;display:flex}.wed-sub .bal{color:#c0392b}.wed-memo{color:#999;white-space:pre-wrap;margin:8px 0 0;font-size:13px}.wed-files{border-top:1px solid #f3f1ea;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;padding-top:10px;display:flex}.file-chip{background:#f3f1ea;border-radius:8px;align-items:center;gap:6px;padding:4px 10px;font-size:13px;display:inline-flex}.file-chip a{color:#3b6fb5;text-decoration:none}.file-chip button{color:#bbb;cursor:pointer;background:0 0;border:none;font-size:14px}.file-add{color:#3b82c4;cursor:pointer;padding:4px 8px;font-size:13px}.money-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.money-grid label{color:#666;flex-direction:column;gap:4px;font-size:13px;display:flex}.money-grid input{border:1px solid #e0ded6;border-radius:8px;width:100%;padding:9px 10px;font-size:14px}.badge{border-radius:10px;padding:2px 8px;font-size:12px}.badge.todo{color:#777;background:#eee}.badge.doing{color:#9a6a00;background:#fdf0d5}.badge.done{color:#1d7a52;background:#e2f3ea}.badge.pending{color:#9a6a00;background:#fdf0d5}.badge.approved{color:#1d7a52;background:#e2f3ea}.badge.blocked{color:#b03030;background:#fbe4e4}.badge.admin{color:#5a52a8;background:#e8e6f5}.modal-back{z-index:50;background:#0006;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:16px;width:100%;max-width:440px;max-height:90vh;padding:20px;overflow-y:auto}.modal.wide{max-width:680px}.modal h3{margin:0 0 14px}.modal select,.modal textarea{border:1px solid #e0ded6;border-radius:8px;padding:10px 12px;font-family:inherit;font-size:14px}.modal input[type=number]{width:100%}.modal textarea{resize:vertical;min-height:60px}.trip{max-width:640px}.dest-card{background:#fff;border:1px solid #ececec;border-radius:12px;margin-bottom:12px;padding:16px}.dest-card.picked{background:#fef7f6;border-color:#e2574c}.dest-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.dest-head strong{font-size:16px}.dest-date{color:#888;font-size:13px}.dest-total{color:#1d7a52;white-space:nowrap;font-size:15px;font-weight:600}.dest-memo{color:#999;white-space:pre-wrap;margin:8px 0 0;font-size:13px}.dest-actions{gap:8px;margin-top:12px;display:flex}.dest-actions button{cursor:pointer;background:#fff;border:1px solid #e0ded6;border-radius:8px;padding:6px 14px;font-size:13px}.trip-detail{max-width:600px}.trip-back{color:#3b82c4;cursor:pointer;background:0 0;border:none;padding:0 0 10px;font-size:14px}.trip-detail h1{margin:0 0 4px}.td-dates{color:#888;margin:0 0 4px;font-size:14px}.td-total{color:#1d7a52;margin:0 0 16px;font-size:15px;font-weight:600}.type-bar{flex-wrap:wrap;gap:8px;margin-bottom:6px;display:flex}.type-btn{cursor:pointer;background:#fff;border:1px solid #e0ded6;border-radius:20px;align-items:center;gap:5px;padding:8px 13px;font-size:13px;display:flex}.type-btn:active{background:#f3f1ea}.tl-day{margin-top:24px}.tl-day-head{align-items:center;gap:8px;margin-bottom:12px;font-size:15px;display:flex}.tl-day-head strong{font-weight:700}.tl-day-head span{color:#999;font-size:13px}.tl-add{color:#3b82c4;cursor:pointer;background:0 0;border:none;margin-left:auto;font-size:13px}.tl-empty{color:#bbb;padding-left:76px;font-size:13px}.tl-row{cursor:pointer;gap:12px;display:flex}.tl-rail{flex-direction:column;flex-shrink:0;align-items:center;width:60px;display:flex;position:relative}.tl-rail:before{content:"";background:#ececec;width:2px;position:absolute;top:0;bottom:-14px;left:50%;transform:translate(-50%)}.tl-time{color:#999;z-index:1;background:#fafaf7;min-height:14px;margin-bottom:4px;padding:0 3px;font-size:11px}.tl-node{z-index:1;border:1.5px solid;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:15px;display:flex;box-shadow:0 0 0 4px #fafaf7}.tl-card{background:#fff;border:1px solid #ececec;border-radius:12px;flex:1;min-width:0;margin-bottom:14px;padding:12px 14px}.tl-title{font-size:15px;font-weight:600}.tl-sub{color:#999;margin-top:3px;font-size:12.5px}.tl-budget{color:#555;margin-top:6px;font-size:13px}.tl-memo{color:#888;white-space:pre-wrap;margin-top:6px;font-size:13px}.admin-row{border-bottom:1px solid #f0eee6;align-items:center;gap:12px;padding:12px 0;display:flex}.admin-info{align-items:center;gap:8px;display:flex}.admin-actions{gap:8px;margin-left:auto;display:flex}.admin-actions button{cursor:pointer;background:#fff;border:1px solid #e0ded6;border-radius:8px;padding:6px 14px;font-size:13px}.admin-actions .danger{color:#c0392b;border-color:#ecc}.studio-page{--sp-bg:#fffbf8;--sp-surface:#fff;--sp-soft:#fff2f6;--sp-primary:#e08ca3;--sp-deep:#bd5d7c;--sp-pale:#fbe0e7;--sp-text:#4a3540;--sp-muted:#a38891;--sp-border:#f3d9e0;max-width:560px;margin:0 auto}.sp-header{text-align:center;padding:8px 0 14px}.sp-names{color:var(--sp-deep);letter-spacing:1px;margin:0;font-family:Gowun Batang,serif;font-size:28px}.sp-heart{color:var(--sp-primary)}.sp-sub{letter-spacing:3px;color:var(--sp-muted);text-transform:uppercase;margin:6px 0 0;font-size:12px}.sp-divider{width:120px;color:var(--sp-primary);align-items:center;gap:10px;margin:14px auto 8px;font-size:12px;display:flex}.sp-divider:before,.sp-divider:after{content:"";background:var(--sp-border);flex:1;height:1px}.sp-stats{color:var(--sp-muted);font-size:12px}.sp-add-concept{background:var(--sp-surface);border:1.5px dashed var(--sp-primary);width:100%;color:var(--sp-deep);cursor:pointer;border-radius:14px;margin-top:8px;padding:15px;font-size:15px;font-weight:600}.sp-add-concept:active{background:var(--sp-soft)}.sp-empty{text-align:center;color:var(--sp-muted);padding:56px 24px}.sp-empty-t{color:var(--sp-text);margin-bottom:6px;font-size:16px;font-weight:600}.sp-empty-d{font-size:13.5px;line-height:1.6}.sp-card{background:var(--sp-surface);border:1px solid var(--sp-border);border-radius:22px;margin-top:16px;overflow:hidden;box-shadow:0 10px 28px #bd5d7c24}.sp-card-head{align-items:center;gap:8px;padding:14px 12px 14px 18px;display:flex}.sp-title{min-width:0;color:var(--sp-text);background:0 0;border:none;border-bottom:1px solid #0000;flex:1;padding:5px 2px;font-size:16.5px;font-weight:600}.sp-title:focus{border-bottom-color:var(--sp-primary);outline:none}.sp-badge{color:var(--sp-deep);background:var(--sp-soft);white-space:nowrap;border-radius:20px;flex-shrink:0;padding:3px 10px;font-size:11.5px}.sp-icon{cursor:pointer;width:32px;height:32px;color:var(--sp-muted);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:15px;display:flex}.sp-icon:hover{background:var(--sp-soft)}.sp-chev{font-size:18px;transition:transform .25s}.sp-card.open .sp-chev{transform:rotate(180deg)}.sp-card-body{padding:0 18px 20px}.sp-flabel{color:var(--sp-muted);letter-spacing:.4px;margin-bottom:7px;font-size:12px;display:block}.sp-memo{background:var(--sp-soft);border:1px solid var(--sp-border);width:100%;min-height:60px;color:var(--sp-text);resize:vertical;box-sizing:border-box;border-radius:14px;padding:12px;font-family:inherit;font-size:14px;line-height:1.55}.sp-moodboard{grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:18px 12px;margin-top:16px;display:grid}.sp-polaroid{transform:rotate(var(--rot,0deg));background:#fff;border-radius:4px;padding:8px 8px 6px;position:relative;box-shadow:0 6px 14px #4a35401f}.sp-polaroid img{aspect-ratio:1;object-fit:cover;cursor:pointer;border-radius:2px;width:100%;display:block}.sp-cap{text-align:center;width:100%;color:var(--sp-text);background:0 0;border:none;margin-top:6px;padding:2px 0;font-family:Gaegu,cursive;font-size:14px}.sp-cap:focus{outline:none}.sp-del{background:var(--sp-primary);color:#fff;cursor:pointer;z-index:2;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:13px;line-height:1;display:flex;position:absolute;top:-8px;right:-8px;box-shadow:0 2px 6px #0000002e}.sp-add-tile{aspect-ratio:1;border:2px dashed var(--sp-pale);background:var(--sp-soft);color:var(--sp-deep);cursor:pointer;text-align:center;border-radius:8px;justify-content:center;align-items:center;font-size:12px;font-weight:500;display:flex}.sp-overlay{z-index:60;background:#28141c8c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.sp-modal{background:#fff;border-radius:20px;width:100%;max-width:420px;max-height:88vh;padding:20px;position:relative;overflow-y:auto}.sp-close{background:var(--sp-soft);width:30px;height:30px;color:var(--sp-muted);cursor:pointer;border:none;border-radius:50%;position:absolute;top:12px;right:12px}.sp-img-wrap{background:var(--sp-soft);touch-action:pan-y;cursor:grab;border-radius:14px;margin-bottom:14px;position:relative;overflow:hidden}.sp-img-wrap img{-webkit-user-select:none;user-select:none;width:100%;display:block}.sp-counter{color:#fff;background:#28141c8c;border-radius:20px;padding:3px 11px;font-size:11.5px;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.sp-nav{width:34px;height:34px;color:var(--sp-deep);cursor:pointer;background:#ffffffe6;border:none;border-radius:50%;font-size:20px;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 2px 8px #0000002e}.sp-nav.prev{left:8px}.sp-nav.next{right:8px}.sp-nav:disabled{opacity:.25}.sp-modal-memo{border:1px solid var(--sp-border);background:var(--sp-soft);width:100%;min-height:80px;color:var(--sp-text);resize:vertical;box-sizing:border-box;border-radius:14px;padding:12px;font-family:inherit;font-size:14px}.sp-modal-actions{justify-content:flex-end;margin-top:14px;display:flex}.sp-danger{color:#c45a6e;cursor:pointer;background:0 0;border:none;padding:8px 6px;font-size:13.5px;font-weight:600}@media (width<=768px){.topbar{z-index:30;background:#fff;border-bottom:1px solid #ececec;align-items:center;gap:12px;padding:12px 16px;display:flex;position:sticky;top:0}.hamburger{cursor:pointer;background:0 0;border:none;padding:0;font-size:22px}.topbar-title{font-size:17px;font-weight:600}.app{display:block}.sidebar{z-index:40;height:100%;transition:transform .25s;position:fixed;top:0;left:0;transform:translate(-100%)}.sidebar.open{transform:translate(0);box-shadow:4px 0 20px #00000026}.backdrop{z-index:35;background:#00000059;position:fixed;inset:0}.content{max-width:100%;padding:16px}.cal{max-width:100%}.cal-cell{min-height:64px}.bar{font-size:10px}.panel,.daily,.write,.post,.wedding,.trip,.trip-detail{max-width:100%}.led-form{flex-wrap:wrap}.led-form input[type=text]{flex:100%}.led-form input[type=number]{flex:1 1 0;width:auto}.led-form button{white-space:nowrap;flex-shrink:0}.lb-inner{flex-direction:column}}.single-evs{flex-direction:column;gap:2px;display:flex}.single-evs .ev{white-space:nowrap;text-overflow:ellipsis;cursor:pointer;border-left:3px solid;border-radius:3px;padding:1px 5px;font-size:11px;line-height:1.35;overflow:hidden}
