:root{font-family:system-ui,-apple-system,sans-serif;color:#1a202c;background:#f7fafc}*{box-sizing:border-box}body{margin:0}.app-shell{display:flex;align-items:flex-start;min-height:100vh}main{flex:1;min-width:0;max-width:960px;margin:2rem auto;padding:0 1rem}.auth-main{max-width:none;width:100%;min-height:100vh;margin:0;display:flex;align-items:center;justify-content:center}.auth-main .card.narrow{margin:0;width:100%}.sidebar{flex:0 0 220px;display:flex;flex-direction:column;min-height:100vh;padding:1.25rem 1rem;background:#1a365d;color:#fff}.sidebar .brand{color:#fff;text-decoration:none;font-weight:700;font-size:1.1rem;margin-bottom:1.5rem}.sidebar .nav-links{display:flex;flex-direction:column;gap:.25rem}.sidebar .nav-links a{color:#e2e8f0;text-decoration:none;padding:.5rem .6rem;border-radius:6px}.sidebar .nav-links a.active{background:#ffffff1f;color:#fff;font-weight:600}.sidebar .nav-links a:hover{background:#ffffff14}.sidebar-footer{margin-top:auto;display:flex;flex-direction:column;align-items:flex-start;gap:.6rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.15)}.sidebar .muted{color:#a0aec0}.card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:1.5rem 2rem}.card.narrow{max-width:420px;margin:3rem auto}.center{text-align:center}h1{font-size:1.4rem;margin-top:0}form{display:flex;flex-direction:column;gap:.9rem}label{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem;font-weight:500}input{padding:.55rem .7rem;border:1px solid #cbd5e0;border-radius:6px;font-size:1rem}button{padding:.5rem 1rem;border:none;border-radius:6px;background:#2b6cb0;color:#fff;font-size:.95rem;cursor:pointer}button:disabled{opacity:.6;cursor:not-allowed}button.danger{background:#c53030}.error{background:#fff5f5;border:1px solid #feb2b2;color:#c53030;padding:.6rem .9rem;border-radius:6px}.success{color:#276749}.muted{color:#718096;font-size:.9rem}.toast{position:fixed;top:1.5rem;right:1.5rem;padding:.75rem 1.25rem;border-radius:8px;box-shadow:0 4px 12px #00000026;font-size:.9rem;font-weight:500;color:#fff;z-index:1000;animation:toast-in .2s ease-out}.toast-success{background:#276749}.toast-error{background:#c53030}@keyframes toast-in{0%{transform:translateY(-8px);opacity:0}to{transform:translateY(0);opacity:1}}table{width:100%;border-collapse:collapse;font-size:.92rem}th,td{text-align:left;padding:.55rem .6rem;border-bottom:1px solid #e2e8f0}th{color:#4a5568;font-weight:600}tr.inactive td{color:#a0aec0}.badge{font-size:.75rem;padding:.15rem .5rem;border-radius:999px;font-weight:600}.badge.ok{background:#c6f6d5;color:#276749}.badge.warn{background:#fefcbf;color:#975a16}.details{display:grid;grid-template-columns:10rem 1fr;row-gap:.7rem}.details dt{color:#4a5568;font-weight:600}.details dd{margin:0}.pagination{display:flex;align-items:center;justify-content:space-between;margin-top:1rem}.bill-main{max-width:none;width:100%;margin:0;padding:0;background:#fff;min-height:100vh}.bill-page{background:#fff}.bill-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.bill-frame{display:block;width:100%;max-width:380px;margin:0 auto;border:none;background:transparent}@media(max-width:480px){.bill-frame{max-width:100%}}.sms-config-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:.9rem 1.25rem;margin-bottom:1rem}.sms-config-title{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.sms-config-icon{font-size:1.05rem}.sms-config-sep{width:1px;height:1.1rem;background:#e2e8f0}.sms-config-title .muted{font-size:.88rem}.sms-config-card{display:flex;flex-direction:column;gap:1.1rem}.sms-config-section-title{font-size:.8rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;margin:0}.sms-config-row{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.sms-config-divider{border:none;border-top:1px solid #e2e8f0;margin:0}.sms-config-field{display:grid;grid-template-columns:160px minmax(0,420px);gap:1rem;align-items:start}.sms-config-label{font-weight:500}.hint{color:#975a16;font-size:.82rem;margin:.35rem 0 0}.toggle{position:relative;display:inline-block;width:40px;height:22px;flex-shrink:0}.toggle input{opacity:0;width:0;height:0}.toggle-track{position:absolute;top:0;right:0;bottom:0;left:0;background:#cbd5e0;border-radius:999px;cursor:pointer;transition:background .15s ease}.toggle-track:before{content:"";position:absolute;width:18px;height:18px;left:2px;top:2px;background:#fff;border-radius:50%;box-shadow:0 1px 2px #00000040;transition:transform .15s ease}.toggle input:checked+.toggle-track{background:#2b6cb0}.toggle input:checked+.toggle-track:before{transform:translate(18px)}@media(max-width:640px){.app-shell{flex-direction:column}.sidebar{flex:0 0 auto;min-height:0;flex-direction:row;align-items:center;flex-wrap:wrap;gap:1rem}.sidebar .brand{margin-bottom:0}.sidebar .nav-links{flex-direction:row}.sidebar-footer{margin-top:0;margin-left:auto;flex-direction:row;align-items:center;border-top:none;padding-top:0}.sms-config-field{grid-template-columns:1fr}.sms-config-row{flex-direction:column;align-items:stretch}}@media(max-width:480px){main{padding:0 .5rem}.card{padding:1rem}}.claim-voucher-page{padding:0 1rem}.claim-voucher-page .card.narrow{width:100%;box-sizing:border-box;overflow-wrap:break-word;word-break:break-word}.claim-voucher-page button[type=submit]{width:100%}.confetti-overlay{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:2000}.confetti-piece{position:absolute;top:-5%;width:9px;height:14px;animation-name:confetti-fall;animation-timing-function:ease-in;animation-iteration-count:infinite;border-radius:2px}.confetti-balloon{position:absolute;top:-8%;font-size:1.8rem;line-height:1;animation-name:confetti-fall;animation-timing-function:ease-in;animation-iteration-count:infinite}@keyframes confetti-fall{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(115vh) rotate(360deg);opacity:.9}}.claim-voucher-card{position:relative;overflow:hidden;text-align:center;border:none;background:linear-gradient(180deg,#fff7ed,#fff 55%);box-shadow:0 10px 30px #ed64a62e,0 2px 8px #0000000f}.claim-voucher-card:before{content:"";position:absolute;top:0;left:0;right:0;height:8px;background:linear-gradient(90deg,#f6ad55,#fc8181,#b794f4,#63b3ed,#68d391)}.claim-voucher-icon{font-size:2.2rem;margin-bottom:.25rem}.claim-voucher-card h1{background:linear-gradient(90deg,#dd6b20,#d53f8c);-webkit-background-clip:text;background-clip:text;color:transparent}.voucher-chip{display:inline-flex;align-items:center;gap:.4rem;margin:.35rem 0 1rem;padding:.5rem 1rem;border:2px dashed #ed64a6;border-radius:999px;background:#fff5f7;color:#97266d;font-weight:700;letter-spacing:.03em;max-width:100%;overflow-wrap:break-word;word-break:break-word}.claim-voucher-card form{text-align:left}.claim-voucher-card button[type=submit]{background:linear-gradient(90deg,#dd6b20,#d53f8c);font-weight:600}.claim-voucher-linked{color:#6b46c1;font-weight:500}.claim-voucher-number{color:#d53f8c;font-weight:700}.claim-voucher-input{border-color:#f6ad55!important;color:#97266d;font-weight:600}.claim-voucher-input:focus{outline:none;border-color:#d53f8c!important;box-shadow:0 0 0 3px #d53f8c26}
