:root{font-family:system-ui,-apple-system,sans-serif;line-height:1.5;font-weight:400;color:#333;background-color:#f5f5f5;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}body{margin:0;min-width:320px}.main-page{max-width:800px;margin:0 auto;padding:2rem 1rem}.main-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.main-header h1{font-size:1.5rem}.btn-primary{background:#4a90d9;color:#fff;padding:.6rem 1.2rem;border-radius:6px;font-size:.9rem;font-weight:600}.btn-primary:hover{background:#357abd}.empty-state{text-align:center;padding:4rem 0;color:#999}.invitation-list{display:flex;flex-direction:column;gap:.8rem}.invitation-card{background:#fff;padding:1rem 1.2rem;border-radius:8px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 1px 3px #00000014}.card-info{display:flex;flex-direction:column;gap:.2rem}.card-info strong{font-size:1rem}.card-date{font-size:.8rem;color:#999}.card-url{font-size:.8rem;color:#4a90d9}.card-actions{display:flex;gap:.5rem}.btn-copy,.btn-edit,.btn-delete{padding:.4rem .8rem;border-radius:4px;font-size:.8rem;font-weight:500}.btn-copy,.btn-edit{background:#e8f0fe;color:#4a90d9}.btn-delete{background:#fee8e8;color:#d94a4a}.modal-overlay{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fff;padding:2rem;border-radius:12px;width:90%;max-width:420px}.modal h2{margin-bottom:1.2rem;font-size:1.2rem}.modal label{display:flex;flex-direction:column;gap:.4rem;font-size:.85rem;color:#666}.modal input{padding:.6rem;border:1px solid #ddd;border-radius:6px;font-size:1rem}.error{color:#d94a4a;font-size:.8rem;margin-top:.3rem}.modal-preview{margin-top:.5rem;font-size:.8rem;color:#4a90d9;min-height:1.2rem}.modal-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:1.5rem}.btn-cancel{padding:.5rem 1rem;border-radius:6px;background:#eee;color:#666;font-weight:500}.component-list{padding:.5rem;display:flex;flex-direction:column;gap:.5rem}.drag-handle-inline{cursor:grab;color:#bbb;font-size:.9rem;-webkit-user-select:none;user-select:none;margin-right:.4rem}.drag-handle-inline:active{cursor:grabbing}.comp-editor{background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 2px 8px #0000001a;border:1px solid #e8e8e8}.comp-editor-collapsed{cursor:grab}.comp-editor-collapsed:active{cursor:grabbing}.comp-editor-collapsed .comp-editor-header{border-bottom:none}.comp-editor-summary{text-align:center;padding:.3rem .8rem .5rem;font-size:.8rem;color:#555}.comp-editor-header{display:flex;justify-content:space-between;align-items:center;padding:.6rem .8rem;background:#f8f8f8;border-bottom:1px solid #eee}.comp-editor-title{font-weight:600;font-size:.85rem}.comp-editor-actions{display:flex;gap:.3rem}.btn-toggle{padding:.2rem .6rem;border-radius:4px;font-size:.75rem;background:#eee;color:#666}.btn-toggle.active{background:#4a90d9;color:#fff}.btn-remove{width:28px;height:28px;border-radius:50%;background:transparent;font-size:.85rem;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;padding:0}.btn-remove:hover{background:#fee8e8}.delete-confirm-overlay{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.delete-confirm-modal{background:#fff;border-radius:10px;padding:1.5rem;min-width:280px;box-shadow:0 4px 20px #0003;text-align:center}.delete-confirm-modal p{font-size:.9rem;color:#333;margin-bottom:1.2rem}.delete-confirm-actions{display:flex;gap:.5rem;justify-content:center}.btn-cancel{padding:.5rem 1.2rem;border-radius:6px;background:#f0f0f0;color:#555;font-size:.85rem;font-weight:600;border:none;cursor:pointer}.btn-cancel:hover{background:#e0e0e0}.btn-delete{padding:.5rem 1.2rem;border-radius:6px;background:#d94a4a;color:#fff;font-size:.85rem;font-weight:600;border:none;cursor:pointer}.btn-delete:hover{background:#c43c3c}.comp-editor-body{padding:.8rem;display:flex;flex-direction:column;gap:.6rem}.cp-input{display:flex;flex-direction:column;gap:.2rem}.cp-label{font-size:.75rem;color:#888;font-weight:500}.cp-input-row{display:flex;gap:.3rem}.cp-input-field{flex:1;padding:.4rem .6rem;border:1px solid #ddd;border-radius:4px;font-size:.85rem}.cp-input-field:focus{outline:none;border-color:#4a90d9}textarea.cp-input-field{resize:vertical}.cp-checkbox{width:18px;height:18px}.cp-buttons{display:flex;gap:2px}.cp-btn{width:24px;height:24px;border-radius:3px;background:#f0f0f0;color:#666;font-size:.7rem;font-weight:700;display:flex;align-items:center;justify-content:center}.cp-btn:hover{background:#e0e0e0}.contact-divider{font-size:.75rem;color:#999;border-top:1px solid #eee;padding-top:.5rem;margin-top:.3rem;font-weight:600}.photo-uploading{font-size:.75rem;color:#4a90d9}.photo-preview-thumb{border-radius:6px;overflow:hidden;border:1px solid #eee}.photo-preview-thumb img{width:100%;display:block}.address-results{display:flex;flex-direction:column;border:1px solid #ddd;border-radius:4px;margin-top:.3rem;max-height:200px;overflow-y:auto}.address-result-item{display:flex;flex-direction:column;align-items:flex-start;padding:.5rem .6rem;border-bottom:1px solid #f0f0f0;background:#fff;cursor:pointer;text-align:left;font-size:.8rem}.address-result-item:last-child{border-bottom:none}.address-result-item:hover{background:#f0f6ff}.address-result-name{font-weight:600;color:#333}.address-result-addr{color:#888;font-size:.75rem}.nav-selected-info{background:#f0f6ff;border:1px solid #4a90d9;border-radius:6px;padding:.5rem .7rem;font-size:.8rem}.nav-selected-name{font-weight:600;color:#333}.nav-selected-addr{color:#666;margin-top:.15rem}.nav-selected-coords{color:#999;font-size:.7rem;margin-top:.15rem}.gallery-editor-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.3rem}.gallery-editor-item{position:relative;aspect-ratio:1;border-radius:4px;overflow:hidden;border:1px solid #eee}.gallery-editor-item img{width:100%;height:100%;object-fit:cover;display:block}.gallery-editor-remove{position:absolute;top:2px;right:2px;width:20px;height:20px;border-radius:50%;background:#0009;color:#fff;font-size:.65rem;font-weight:700;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center}.gallery-editor-remove:hover{background:#d94a4ae6}.add-component-list{display:flex;flex-direction:column;gap:.4rem;margin:1rem 0}.add-component-item{display:flex;justify-content:space-between;align-items:center;padding:.7rem 1rem;border:1px solid #eee;border-radius:6px;font-size:.9rem;background:#fff;transition:background .15s}.add-component-item:hover{background:#f0f6ff;border-color:#4a90d9}.badge-initial{font-size:.7rem;background:#e8f0fe;color:#4a90d9;padding:.1rem .4rem;border-radius:3px}.invitation-preview{width:375px;min-height:600px;background:var(--theme-background, white);border-radius:8px;box-shadow:0 2px 12px #0000001a;overflow:hidden}.preview-reorder-notice{text-align:center;padding:.6rem;background:#f0f4ff;color:#4a6fa5;font-size:.8rem;font-weight:600;border-bottom:1px solid #d8e2f0}.preview-section-wrap{position:relative}.preview-color-overlay{position:absolute;inset:0;opacity:.3;pointer-events:none;z-index:1}.preview-section{padding:2rem 1.5rem;border-bottom:1px solid #f0f0f0}.preview-section:last-child{border-bottom:none}.preview-greeting{padding:3rem 1.5rem}.greeting-title{font-size:1.1rem;font-weight:400;margin-bottom:1.2rem;color:var(--theme-primary, #555)}.greeting-content{font-size:.9rem;line-height:1.8;color:var(--theme-secondary, #666)}.preview-person{text-align:center;padding:1.5rem}.person-role{font-size:.75rem;color:var(--theme-secondary, #999);margin-bottom:.3rem}.person-parents{font-size:.85rem;color:var(--theme-secondary, #777);margin-bottom:.3rem}.person-relation{color:var(--theme-secondary, #999)}.person-name{font-size:1.3rem;font-weight:600;color:var(--theme-primary, #333)}.deceased{color:var(--theme-secondary, #999)}.preview-summary{text-align:center;padding:2rem 1.5rem}.summary-names{display:flex;justify-content:center;align-items:center;gap:.6rem;margin-bottom:1rem}.summary-name{font-size:1.4rem;font-weight:600;color:var(--theme-primary, #333)}.summary-amp{font-size:1rem;color:var(--theme-accent, #bbb)}.summary-date{font-size:.9rem;color:var(--theme-primary, #555);margin-bottom:.2rem}.summary-time{font-size:.9rem;color:var(--theme-secondary, #777);margin-bottom:.5rem}.summary-venue{font-size:.85rem;color:var(--theme-secondary, #999)}.preview-photo{padding:0;text-align:center}.photo-image{width:100%;display:block}.photo-caption{padding:.8rem 1.5rem;font-size:.85rem;color:var(--theme-secondary, #777)}.preview-gallery{padding:.5rem}.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px}.gallery-thumb{aspect-ratio:1;overflow:hidden;cursor:pointer}.gallery-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s}.gallery-thumb:hover img{transform:scale(1.05)}.gallery-popup-overlay{position:fixed;inset:0;background:#000000e6;display:flex;align-items:center;justify-content:center;z-index:200}.gallery-popup-close{position:fixed;top:1rem;right:1rem;width:40px;height:40px;border-radius:50%;background:#fff3;color:#fff;font-size:1.1rem;font-weight:700;border:none;cursor:pointer;z-index:201}.gallery-popup-close:hover{background:#fff6}.gallery-popup-image{max-width:95vw;max-height:90vh;object-fit:contain}.preview-date{text-align:center}.date-main{font-size:1rem;color:var(--theme-primary, #555);margin-bottom:.3rem}.date-time{font-size:1.1rem;font-weight:600;color:var(--theme-primary, #333)}.mini-calendar{margin-top:1rem;padding:.8rem;background:#00000008;border-radius:8px}.cal-header{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:.4rem}.cal-day-name{font-size:.7rem;color:var(--theme-secondary, #999);font-weight:600}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:2px}.cal-day{font-size:.75rem;padding:.2rem;color:var(--theme-secondary, #666)}.cal-today{background:var(--theme-accent, #4a90d9);color:#fff;border-radius:50%;font-weight:700}.cal-empty{visibility:hidden}.preview-venue{text-align:center}.venue-name{font-size:1.1rem;font-weight:600;color:var(--theme-primary, #333);margin-bottom:.3rem}.venue-hall{font-weight:400;font-size:.9rem;color:var(--theme-secondary, #777)}.venue-address{font-size:.85rem;color:var(--theme-secondary, #777)}.preview-transportation{padding:1.5rem}.transport-title{font-weight:600;font-size:.9rem;color:var(--theme-primary, #555);margin-bottom:.5rem}.transport-content{font-size:.85rem;line-height:1.7;color:var(--theme-secondary, #666)}.preview-navigation{text-align:center}.preview-navigation h4{font-size:.9rem;color:var(--theme-primary, #555);margin-bottom:.5rem}.kakao-map{width:100%;height:200px;border-radius:8px;margin-bottom:.8rem}.nav-address{font-size:.85rem;color:var(--theme-secondary, #777);margin-bottom:1rem}.nav-buttons{display:flex;justify-content:center;gap:.5rem}.nav-btn{padding:.5rem 1rem;border-radius:6px;font-size:.8rem;font-weight:600;border:1px solid #ddd;background:#fff;color:#555;cursor:pointer;transition:background .15s}.nav-btn:hover{background:#f5f5f5}.nav-btn:disabled{opacity:.4;cursor:not-allowed}.nav-btn-naver{border-color:#1ec800;color:#1ec800}.nav-btn-naver:hover{background:#e8fce5}.nav-btn-tmap{border-color:#ff4545;color:#ff4545}.nav-btn-tmap:hover{background:#fff0f0}.nav-btn-kakao{border-color:#fee500;color:#3c1e1e;background:#fee500}.nav-btn-kakao:hover{background:#fdd800}.preview-contact{text-align:center}.preview-contact h4{font-size:.9rem;color:var(--theme-primary, #555);margin-bottom:.8rem}.contact-group{display:flex;flex-direction:column;gap:.4rem}.contact-parents{margin-top:.8rem;padding-top:.8rem;border-top:1px solid #f0f0f0}.contact-row{display:flex;justify-content:center;align-items:center;gap:.8rem}.contact-name{font-size:.9rem;color:var(--theme-primary, #555)}.contact-phone{font-size:.85rem;color:var(--theme-accent, #4a90d9);text-decoration:none}.theme-panel-body{padding:.8rem;display:flex;flex-direction:column;gap:1.2rem}.theme-section-title{font-size:.8rem;font-weight:600;color:#555;margin-bottom:.5rem}.theme-font-list{display:flex;flex-direction:column;gap:.3rem}.theme-font-item{padding:.5rem .7rem;border:1px solid #e0e0e0;border-radius:6px;background:#fff;font-size:.85rem;text-align:left;cursor:pointer;transition:all .15s}.theme-font-item:hover{border-color:#4a90d9}.theme-font-item.active{border-color:#4a90d9;background:#f0f6ff;color:#4a90d9;font-weight:600}.theme-preset-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.4rem}.theme-preset-item{display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:.5rem;border:2px solid #e8e8e8;border-radius:8px;background:#fff;cursor:pointer;transition:all .15s}.theme-preset-item:hover{border-color:#4a90d9}.theme-preset-item.active{border-color:#4a90d9;background:#f0f6ff}.theme-preset-colors{display:flex;gap:.25rem}.preset-dot{width:16px;height:16px;border-radius:50%;display:block}.theme-preset-name{font-size:.7rem;color:#666}.theme-preset-item.active .theme-preset-name{color:#4a90d9;font-weight:600}.theme-color-list{display:flex;flex-direction:column;gap:.4rem}.theme-color-row{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;color:#555;cursor:pointer}.theme-color-row input[type=color]{width:32px;height:24px;border:1px solid #ddd;border-radius:4px;padding:0;cursor:pointer}.editor-page{height:100vh;display:flex;flex-direction:column}.editor-header{display:flex;align-items:center;gap:1rem;padding:.8rem 1.2rem;background:#fff;border-bottom:1px solid #e0e0e0}.editor-header h2{font-size:1.1rem;flex:1}.editor-header-actions{display:flex;gap:.5rem}.btn-back{padding:.4rem .8rem;border-radius:4px;background:#eee;font-size:.85rem}.btn-view{padding:.4rem .8rem;border-radius:4px;background:#e8f0fe;color:#4a90d9;font-size:.85rem;font-weight:500}.btn-save{padding:.4rem 1rem;border-radius:4px;background:#4a90d9;color:#fff;font-size:.85rem;font-weight:600}.btn-save:disabled{opacity:.6}.editor-body{flex:1;display:flex;overflow:hidden}.editor-col{display:flex;flex-direction:column;overflow:hidden}.editor-col-left{width:35%;border-right:1px solid #e0e0e0;overflow-y:auto;background:#fafafa}.editor-col-center{width:40%;overflow-y:auto;background:#e8e8e8}.editor-col-right{width:25%;border-left:1px solid #e0e0e0;overflow-y:auto;background:#fafafa}.editor-col-header{display:flex;justify-content:space-between;align-items:center;padding:.8rem 1rem;background:#fff;border-bottom:1px solid #e0e0e0;font-weight:600;font-size:.9rem;position:sticky;top:0;z-index:10}.editor-preview-wrap{display:flex;justify-content:center;align-items:flex-start;padding:1rem}.title-editor{background:#fff;border-bottom:1px solid #e0e0e0}.title-editor-header{padding:.6rem .8rem;background:#f0f0f0;font-weight:600;font-size:.85rem;border-bottom:1px solid #e0e0e0}.title-editor-body{padding:.8rem;display:flex;flex-direction:column;gap:.6rem}.title-hint{font-size:.7rem;color:#999;font-style:italic}.editor-left-actions{display:flex;gap:.5rem;align-items:center}.btn-reorder{padding:.3rem .7rem;border-radius:4px;font-size:.75rem;background:#eee;color:#666}.btn-reorder.active{background:#4a90d9;color:#fff}.btn-add{width:30px;height:30px;border-radius:50%;background:#4a90d9;color:#fff;font-size:1.2rem;display:flex;align-items:center;justify-content:center;font-weight:700}.loading{display:flex;align-items:center;justify-content:center;height:100vh;color:#999}@media(max-width:1024px){.editor-col-left{width:40%}.editor-col-center{width:35%}.editor-col-right{width:25%}}@media(max-width:768px){.editor-body{flex-direction:column}.editor-col-left,.editor-col-center,.editor-col-right{width:100%;border-right:none;border-left:none}.editor-col-left,.editor-col-center{border-bottom:1px solid #e0e0e0;max-height:40vh}.editor-col-right{flex:1}}.viewer-page{min-height:100vh;display:flex;justify-content:center;background:#f0f0f0;padding:0}.viewer-page .invitation-preview{width:100%;max-width:500px;min-height:100vh;border-radius:0;box-shadow:none}.viewer-error,.viewer-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;color:#999;text-align:center}.viewer-error h2{font-size:1.2rem;color:#666;margin-bottom:.5rem}@media(max-width:500px){.viewer-page{background:#fff}}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#333;background:#f5f5f5}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;background:none;font-family:inherit}input,textarea,select{font-family:inherit;font-size:inherit}
