:root{--purple: #2f7a55;--purple-dark: #25603f;--blue: #4c8577;--pink: #f1755a;--green: #2f7a55;--bg: #faf4e8;--card: #ffffff;--text: #211e17;--muted: #8c8577;--border: #ece6d8;--radius: 20px;--shadow: 0 12px 36px rgba(70, 55, 25, .08)}*{box-sizing:border-box}body{margin:0;font-family:Pretendard,-apple-system,Segoe UI,Malgun Gothic,sans-serif;background:var(--bg);color:var(--text)}.app{min-height:100vh;display:flex;flex-direction:column}.header{background:var(--card);color:var(--text);padding:26px 20px;box-shadow:0 2px 16px #4637190d}.header-inner{max-width:1100px;margin:0 auto}.header h1{margin:0 0 6px;font-size:26px;letter-spacing:-.5px}.header p{margin:0;color:var(--muted);font-size:14px;font-weight:500}.mode-switch{display:flex;gap:4px;width:fit-content;margin:-20px auto 0;padding:5px;background:#fff;border-radius:999px;box-shadow:var(--shadow);position:relative;z-index:3}.mode-btn{padding:9px 26px;border:none;background:transparent;border-radius:999px;font-size:15px;font-weight:700;color:var(--muted);cursor:pointer;transition:all .15s;white-space:nowrap}.mode-btn .mode-icon{font-size:16px}.mode-btn.on{background:var(--purple);color:#fff}.et-funeral .mode-btn.on{background:var(--blue)}.nav{display:flex;gap:8px;max-width:1100px;margin:18px auto 0;padding:0 20px;width:100%}.nav-btn{flex:1;background:var(--card);border:none;border-radius:16px;padding:14px 10px;font-size:14px;font-weight:600;color:var(--muted);cursor:pointer;box-shadow:var(--shadow);display:flex;flex-direction:column;align-items:center;gap:4px;transition:all .18s}.nav-btn:hover{transform:translateY(-2px)}.nav-btn.active{background:var(--purple);color:#fff}.nav-icon{font-size:20px}.main{max-width:1100px;margin:28px auto;padding:0 20px;width:100%;flex:1}.section-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:16px}.section-head h2{margin:0;font-size:22px}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.sub{font-size:16px;margin:24px 0 12px;color:var(--text)}.btn{border:none;border-radius:999px;padding:11px 20px;font-size:14px;font-weight:700;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px;transition:all .15s}.btn.primary{background:var(--purple);color:#fff}.btn.primary:hover{filter:brightness(1.05)}.btn.ghost{background:#fff;color:var(--text);border:1.5px solid var(--border)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-icon{background:transparent;border:1px solid var(--border);border-radius:999px;padding:5px 12px;font-size:12px;cursor:pointer;color:var(--muted)}.btn-icon.danger:hover{background:#fee2e2;color:#dc2626;border-color:#fecaca}.link{color:var(--purple);font-size:13px;text-decoration:none;font-weight:700}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:12px}.stat-card{border-radius:24px;padding:24px;background:#fff;color:var(--text);box-shadow:var(--shadow)}.stat-card.purple{background:#e6f1e9}.stat-card.purple .stat-value{color:#256045}.stat-card.blue{background:#e4efee}.stat-card.blue .stat-value{color:#336b64}.stat-card.pink{background:#fbe9e2}.stat-card.pink .stat-value{color:#be5238}.stat-card.green{background:#fbefd3}.stat-card.green .stat-value{color:#9a6b1e}.stat-label{font-size:14px;color:var(--muted);font-weight:700}.stat-value{font-size:30px;font-weight:900;margin-top:6px;letter-spacing:-1px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.venue-card{background:var(--card);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);transition:transform .15s}.venue-card:hover{transform:translateY(-3px)}.venue-card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.venue-card-body{display:flex;flex-direction:column;gap:6px;font-size:14px}.badge{font-size:12px;padding:3px 10px;border-radius:999px;font-weight:700}.badge.wedding{background:#e6f1e9;color:#256045}.badge.funeral{background:#e4efee;color:#336b64}.form-card{background:var(--card);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow);margin-bottom:16px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-bottom:16px}.form-grid .span2{grid-column:span 2}label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--muted)}input,select{padding:10px 12px;border:1px solid var(--border);border-radius:12px;font-size:14px;font-family:inherit;color:var(--text);background:#fff}input:focus,select:focus{outline:2px solid var(--purple);border-color:transparent}.qr-layout{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}.qr-layout .form-card{display:flex;flex-direction:column;gap:14px}.qr-preview{background:var(--card);border-radius:var(--radius);padding:28px;box-shadow:var(--shadow);text-align:center}.qr-img{width:260px;max-width:100%;border-radius:12px}.qr-meta{margin:14px 0}.qr-meta strong{font-size:18px;display:block}.qr-placeholder{padding:60px 0}.qr-placeholder span{font-size:64px;opacity:.3}.qr-preview .actions{justify-content:center;margin-top:14px}.table-wrap{overflow-x:auto;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow)}.tx-table{width:100%;border-collapse:collapse;font-size:14px}.tx-table th{text-align:left;padding:16px;background:#faf6ec;color:var(--muted);font-size:12px;font-weight:800;border-bottom:2px solid var(--bg)}.tx-table td{padding:14px 16px;border-bottom:1px solid #f3efe4}.tx-table tr:last-child td{border-bottom:none}.tx-table .amount{font-weight:800;color:var(--purple)}.muted{color:var(--muted)}.small{font-size:12px}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);padding:14px 22px;border-radius:999px;color:#fff;font-weight:700;box-shadow:0 8px 30px #0003;z-index:100;animation:pop .2s}.toast-success{background:var(--green)}.toast-error{background:#ef4444}@keyframes pop{0%{opacity:0;transform:translate(-50%,10px)}}.footer{text-align:center;padding:24px;color:var(--muted);font-size:13px}.account-section{border:1px dashed var(--border);border-radius:16px;padding:16px;margin-bottom:16px;background:#faf6ec}.account-section h4{margin:0 0 12px;font-size:14px;color:var(--purple-dark)}.acct-ok{color:var(--purple-dark);font-size:13px;font-weight:600}.acct-missing{color:#b45309;font-size:13px;font-weight:600}.venue-card .btn-icon{margin-top:12px}.photo-section{background:#faf6ec}.et-funeral .photo-section{background:#f7f4ec}.photo-upload{margin-top:8px}.photo-drop{display:flex;align-items:center;justify-content:center;padding:28px;border:2px dashed var(--border);border-radius:16px;background:#fff;color:var(--muted);font-weight:600;cursor:pointer;text-align:center}.photo-drop:hover{border-color:var(--purple);color:var(--purple)}.photo-preview{display:flex;flex-direction:column;align-items:flex-start;gap:10px}.photo-preview img{max-width:240px;max-height:240px;border-radius:16px;box-shadow:var(--shadow)}.greeting-input{padding:10px 12px;border:1px solid var(--border);border-radius:12px;font-size:14px;font-family:inherit;color:var(--text);background:#fff;resize:vertical}.greeting-input:focus{outline:2px solid var(--purple);border-color:transparent}.guest-greeting{margin:8px 0 4px;color:var(--text);font-size:15px;line-height:1.5;white-space:pre-wrap;font-weight:500}.guest-photo{margin:-28px -24px 16px}.guest-photo img{width:100%;max-height:280px;object-fit:cover;display:block;border-radius:28px 28px 0 0}.counter{display:flex;align-items:center;gap:16px}.counter button{width:48px;height:48px;border-radius:14px;border:1.5px solid var(--border);background:#fff;font-size:24px;font-weight:700;cursor:pointer;color:var(--purple)}.counter button:active{background:#e6f1e9}.counter-val{font-size:18px;font-weight:800;min-width:60px;text-align:center}.total-box{display:flex;flex-direction:column;align-items:center;gap:2px;background:#e6f1e9;border:1.5px solid #cfe3d4;border-radius:20px;padding:18px;margin-top:16px}.guest-wrap.fun .total-box{background:#e6f1e9;border-color:#cfe3d4}.total-box span{font-size:13px;color:var(--purple-dark);font-weight:700}.total-box b{font-size:30px;color:#1e5a3b}.guest-wrap.fun .total-box b{color:#1e5a3b}.total-box small{color:var(--muted)}.status{font-size:12px;padding:3px 10px;border-radius:999px;font-weight:700;white-space:nowrap}.st-declared{background:#fef3c7;color:#b45309}.st-confirmed{background:#d1fae5;color:#047857}.row-actions{display:flex;gap:6px;white-space:nowrap}.btn-icon.ok{color:var(--green);border-color:#a7f3d0}.btn-icon.ok:hover{background:#d1fae5}.guest-wrap{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:24px 16px;background:var(--bg)}.guest-wrap.fun{background:var(--bg)}.guest-card{width:100%;max-width:440px;background:#fff;border-radius:30px;box-shadow:var(--shadow);padding:30px 24px}.guest-head{text-align:center;margin-bottom:22px}.guest-emoji{font-size:48px}.guest-head h1{font-size:24px;margin:8px 0 4px;font-weight:900;letter-spacing:-.5px}.guest-kind{color:var(--purple);margin:0;font-weight:800}.guest-label{display:block;font-weight:800;font-size:14px;margin:20px 0 9px;color:var(--text)}.guest-input{width:100%;padding:15px 16px;font-size:16px;border:1.5px solid var(--border);border-radius:16px;margin-top:4px;background:#fcfaf5;color:var(--text)}.guest-input:focus{outline:none;border-color:var(--purple);background:#fff}.chip-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.chip-grid.amount{grid-template-columns:repeat(2,1fr)}.chip{padding:13px 6px;border:1.5px solid var(--border);background:#fff;border-radius:14px;font-size:14px;font-weight:700;cursor:pointer;color:var(--text);transition:all .12s}.chip.on{background:var(--purple);color:#fff;border-color:var(--purple)}.guest-btn{width:100%;padding:17px;font-size:17px;font-weight:800;border:none;border-radius:16px;cursor:pointer;margin-top:14px}.guest-btn.primary{background:var(--purple);color:#fff}.guest-btn.toss{background:#0064ff;color:#fff}.guest-btn.ghost{background:#f6f1e4;color:var(--text);border:1.5px solid var(--border)}.guest-btn:disabled{opacity:.6}.guest-warn{color:#b45309;background:#fef3c7;padding:12px;border-radius:12px;font-size:13px;margin-top:14px}.guest-error{color:#dc2626;text-align:center;font-weight:600}.guest-confirm{text-align:center}.guest-confirm .check{width:64px;height:64px;border-radius:50%;background:var(--green);color:#fff;font-size:34px;line-height:64px;margin:0 auto 12px}.guest-confirm h2{margin:0 0 18px}.summary{background:#f7f3ea;border-radius:16px;padding:16px;margin-bottom:18px}.summary div{display:flex;justify-content:space-between;padding:6px 0;font-size:15px}.summary span{color:var(--muted)}.guest-guide{font-weight:700;margin:8px 0}.account-box{background:#e6f1e9;border-radius:16px;padding:16px;margin-bottom:8px}.guest-wrap.fun .account-box{background:#e6f1e9}.account-line{font-size:17px;font-weight:800}.account-holder{font-size:13px;color:var(--muted);margin-top:4px}.guest-note{font-size:12px;color:var(--muted);margin-top:16px;line-height:1.5}.guest-footer{color:var(--muted);font-size:12px;margin-top:20px}.guest-wrap.ev{background:var(--bg)}.ev-home{width:100%;max-width:460px}.cat-list{display:flex;flex-direction:column;gap:14px;margin-top:6px}.cat-card{background:#fff;border-radius:24px;padding:20px;box-shadow:var(--shadow);border-left:6px solid var(--purple)}.cat-card.cat-funeral{border-left-color:var(--blue)}.cat-card.cat-etc{border-left-color:var(--pink)}.cat-title{display:flex;align-items:center;gap:10px;font-size:19px;font-weight:800;margin-bottom:14px}.cat-icon{font-size:24px}.cat-actions{display:flex;gap:10px}.cat-btn{flex:1;text-align:center;text-decoration:none;padding:14px 8px;border-radius:14px;font-weight:800;font-size:15px}.cat-btn.primary{background:var(--purple);color:#fff}.cat-btn.ghost{background:#f6f1e4;color:var(--text);border:1px solid var(--border)}a.guest-btn{display:block;text-align:center;text-decoration:none;box-sizing:border-box}.guest-btn.line{background:#fff;border:1.5px solid var(--border);color:var(--text)}.ev-kiosk{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4vh 4vw;text-align:center}.ev-kiosk.fun{background:var(--bg)}.kiosk-title{font-size:clamp(28px,5vw,64px);margin:0 0 8px;color:var(--text);font-weight:900;letter-spacing:-1px}.kiosk-greet{font-size:clamp(16px,2.4vw,28px);color:var(--purple);margin:0 0 3vh;font-weight:700}.kiosk-qr{width:min(62vh,72vw);height:auto;background:#fff;border-radius:28px;padding:22px;box-shadow:var(--shadow)}.kiosk-guide{font-size:clamp(16px,2.6vw,30px);font-weight:800;color:var(--purple-dark);margin-top:3vh}.kiosk-exit{position:fixed;top:18px;right:18px;z-index:301;background:#ffffffd9;border:1px solid var(--border);border-radius:999px;padding:10px 18px;font-size:15px;font-weight:700;color:var(--muted);cursor:pointer}.ev-qr{background:#fff;border-radius:24px;padding:18px;display:inline-block;margin:18px auto 10px;box-shadow:var(--shadow)}.ev-qr img{width:240px;max-width:100%;display:block}.pay-btn{width:100%;min-height:52px;border:none;border-radius:16px;font-size:17px;font-weight:800;cursor:pointer;margin-top:12px;display:flex;align-items:center;justify-content:center}.pay-btn.kakao{background:#fee500;color:#3c1e1e}.pay-btn.toss{background:#0064ff;color:#fff}.pay-btn:disabled{opacity:.6;cursor:not-allowed}.person-block{border:1px solid var(--border);border-radius:16px;padding:12px;margin-top:10px;background:#faf6ec}.amt-pick{margin-top:8px}.amt-chips{display:flex;gap:6px;flex-wrap:wrap}.amt-chip{flex:1;min-width:56px;padding:11px 4px;border:1.5px solid var(--border);background:#fff;border-radius:12px;font-size:14px;font-weight:700;color:var(--text);cursor:pointer}.amt-chip.on{background:var(--purple);color:#fff;border-color:var(--purple)}.amt-input{width:100%;margin-top:8px;padding:12px;border:1.5px solid var(--border);border-radius:12px;font-size:15px}.companion-row{display:flex;gap:8px;align-items:center;margin-top:8px}.companion-row .guest-input,.companion-row input{flex:1;margin:0}.companion-del{flex:0 0 auto;width:44px;height:44px;border:1px solid var(--border);background:#fff;border-radius:12px;color:#ef4444;font-size:16px;cursor:pointer}.companion-add{margin-top:10px;background:#e6f1e9;color:var(--purple-dark);border:1px dashed var(--purple);border-radius:12px;padding:11px 14px;font-size:14px;font-weight:700;cursor:pointer;width:100%}.ev-admin{min-height:100vh;display:flex;flex-direction:column;background:var(--bg)}.admin-head{background:#fff;border-radius:24px;padding:26px 30px;box-shadow:var(--shadow);display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px}.admin-head h1{margin:0 0 6px;font-size:26px;letter-spacing:-.5px}.admin-head p{margin:0;color:var(--muted);font-size:14px;font-weight:500}.admin-logout{flex:0 0 auto;background:var(--bg);color:var(--text);border:1.5px solid var(--border);border-radius:999px;padding:11px 20px;font-weight:800;cursor:pointer;font-size:14px}.stat-card.riley{display:flex;align-items:center;gap:18px}.stat-tile{width:62px;height:62px;border-radius:18px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-size:28px}.stat-tile.green{background:#e6f1e9}.stat-tile.coral{background:#fce6de}.stat-tile.blue{background:#e4efee}.stat-tile.amber{background:#fbefd3}.stat-card.riley .stat-value{color:var(--text)}.stat-card.riley .stat-value.money{color:var(--purple)}.sa-modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#211e1780;z-index:200;display:flex;align-items:flex-start;justify-content:center;padding:24px;overflow:auto}.sa-modal{background:#fff;border-radius:24px;padding:24px;width:100%;max-width:760px;box-shadow:0 20px 60px #0000004d;margin:auto}.sa-modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.sa-modal-head h3{margin:0}.sa-detail-meta{display:flex;flex-direction:column;gap:6px;font-size:14px;background:#f7f3ea;border-radius:16px;padding:16px}.cash-tag{font-size:11px;background:#fef3c7;color:#b45309;padding:2px 6px;border-radius:6px;margin-left:6px;font-weight:700}@media (max-width: 860px){.stat-grid{grid-template-columns:repeat(2,1fr)}.qr-layout{grid-template-columns:1fr}}@media (max-width: 560px){.form-grid{grid-template-columns:1fr}.form-grid .span2{grid-column:span 1}.nav-btn span:not(.nav-icon){font-size:12px}.header h1{font-size:20px}}
