*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#ffffff;--bg-card:#f9fafb;--bg-accent:#f3f4f6;
  --fg:#111827;--fg-secondary:#6b7280;--fg-muted:#9ca3af;
  --primary:#3b82f6;--primary-fg:#ffffff;--primary-hover:#2563eb;
  --border:#e5e7eb;--input-border:#d1d5db;
  --destructive:#ef4444;--success:#22c55e;
  --radius:0.5rem;--shadow:0 1px 3px rgba(0,0,0,0.1);
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
body{font-family:var(--font);background:var(--bg);color:var(--fg);line-height:1.5;min-height:100vh}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}

.container{max-width:1100px;margin:0 auto;padding:0 1rem}

/* Header */
.header{border-bottom:1px solid var(--border);background:var(--bg-card);position:sticky;top:0;z-index:50}
.header-inner{display:flex;align-items:center;justify-content:space-between;padding:0.75rem 1rem;max-width:1100px;margin:0 auto;gap:1rem}
.header-brand{display:flex;align-items:center;gap:0.75rem}
.header-logo{width:36px;height:36px;background:var(--primary);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;color:var(--primary-fg);font-weight:700;font-size:1rem}
.header-title{font-size:1.1rem;font-weight:600;line-height:1.2}
.header-email{font-size:0.75rem;color:var(--fg-secondary)}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:0.5rem;padding:0.5rem 1rem;border-radius:var(--radius);font-size:0.875rem;font-weight:500;cursor:pointer;border:1px solid transparent;transition:all 0.15s;font-family:var(--font);line-height:1.5}
.btn:disabled{opacity:0.5;cursor:not-allowed}
.btn-primary{background:var(--primary);color:var(--primary-fg);border-color:var(--primary)}
.btn-primary:hover:not(:disabled){background:var(--primary-hover)}
.btn-secondary{background:var(--bg-accent);color:var(--fg);border-color:var(--border)}
.btn-secondary:hover:not(:disabled){background:var(--border)}
.btn-danger{background:var(--destructive);color:#fff;border-color:var(--destructive)}
.btn-danger:hover:not(:disabled){opacity:0.9}
.btn-ghost{background:transparent;color:var(--fg-secondary);border-color:transparent}
.btn-ghost:hover:not(:disabled){background:var(--bg-accent)}
.btn-sm{padding:0.375rem 0.75rem;font-size:0.8125rem}
.btn-icon{padding:0.5rem;width:36px;height:36px;justify-content:center}

/* Cards */
.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.card-header{padding:1rem 1.25rem 0.75rem}
.card-content{padding:0.75rem 1.25rem 1.25rem}
.card-title{font-size:1rem;font-weight:600}
.card-desc{font-size:0.875rem;color:var(--fg-secondary);margin-top:0.25rem}

/* Forms */
.form-group{margin-bottom:1rem}
.form-label{display:block;font-size:0.875rem;font-weight:500;margin-bottom:0.375rem}
.form-input{width:100%;padding:0.5rem 0.75rem;border:1px solid var(--input-border);border-radius:var(--radius);font-size:0.875rem;font-family:var(--font);background:var(--bg);color:var(--fg);transition:border-color 0.15s}
.form-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(59,130,246,0.1)}
.form-input-icon{position:relative}
.form-input-icon .icon{position:absolute;left:0.75rem;top:50%;transform:translateY(-50%);color:var(--fg-muted);width:16px;height:16px}
.form-input-icon input{padding-left:2.25rem}
.form-input-icon .toggle-pw{position:absolute;right:0.75rem;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--fg-muted);padding:0}
textarea.form-input{resize:vertical;min-height:80px}
.form-error{color:var(--destructive);font-size:0.8125rem;margin-top:0.25rem}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}

/* Tabs */
.tabs{display:flex;gap:0.25rem;border-bottom:1px solid var(--border);margin-bottom:1.5rem;overflow-x:auto}
.tab{padding:0.625rem 1rem;font-size:0.875rem;font-weight:500;color:var(--fg-secondary);background:none;border:none;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;font-family:var(--font);display:flex;align-items:center;gap:0.5rem;transition:all 0.15s}
.tab:hover{color:var(--fg)}
.tab.active{color:var(--primary);border-bottom-color:var(--primary)}
.tab-content{display:none}
.tab-content.active{display:block}

/* Badge */
.badge{display:inline-flex;align-items:center;gap:0.25rem;padding:0.125rem 0.5rem;border-radius:999px;font-size:0.75rem;font-weight:500;white-space:nowrap}
.badge-primary{background:var(--primary);color:var(--primary-fg)}
.badge-secondary{background:var(--bg-accent);color:var(--fg-secondary);border:1px solid var(--border)}
.badge-success{background:#dcfce7;color:#166534}
.badge-warning{background:#fef3c7;color:#92400e}
.badge-danger{background:#fee2e2;color:#991b1b}

/* Stats Grid */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem}
.stat-card{padding:1rem;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius)}
.stat-label{font-size:0.8125rem;color:var(--fg-secondary)}
.stat-value{font-size:1.5rem;font-weight:700;margin-top:0.25rem}

/* Service selector */
.service-radio{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:2px solid var(--input-border);flex-shrink:0;transition:all 0.15s}
.service-radio.selected{border-color:var(--primary);background:var(--primary)}
.service-radio.selected::after{content:'';width:8px;height:8px;border-radius:50%;background:var(--primary-fg)}
.service-card{cursor:pointer;transition:box-shadow 0.15s}
.service-card.selected{box-shadow:0 0 0 2px var(--primary)}
.service-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1rem}

/* Consent box */
.consent-box{max-height:160px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius);padding:1rem;background:var(--bg);font-size:0.75rem;color:var(--fg-secondary);line-height:1.6;white-space:pre-line}
.esign-info{background:#eff6ff;border:1px solid #bfdbfe;border-radius:var(--radius);padding:0.75rem;font-size:0.75rem;color:#1d4ed8;margin-top:0.75rem;line-height:1.5}
.checkbox-row{display:flex;align-items:flex-start;gap:0.75rem;margin-top:0.75rem}
.checkbox-row input[type=checkbox]{width:18px;height:18px;margin-top:2px;accent-color:var(--primary);flex-shrink:0}

/* Auth page */
.auth-page{display:flex;min-height:100vh}
.auth-form-side{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}
.auth-form-wrap{width:100%;max-width:420px}
.auth-hero{flex:1;background:var(--primary);display:flex;align-items:center;justify-content:center;padding:3rem;color:var(--primary-fg)}
.auth-hero h2{font-size:1.75rem;font-weight:700;margin-bottom:1rem}
.auth-hero p{font-size:1.05rem;opacity:0.85;line-height:1.6;margin-bottom:2rem}
.auth-step{display:flex;align-items:flex-start;gap:0.75rem;margin-bottom:1rem}
.auth-step-num{width:32px;height:32px;border-radius:var(--radius);background:rgba(255,255,255,0.2);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:0.875rem;flex-shrink:0}
.auth-step h3{font-weight:600;font-size:0.95rem}
.auth-step p{font-size:0.85rem;opacity:0.7}
.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:0;margin-bottom:1.5rem;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.auth-tab{padding:0.625rem;text-align:center;font-size:0.875rem;font-weight:500;cursor:pointer;background:var(--bg-accent);color:var(--fg-secondary);border:none;font-family:var(--font);transition:all 0.15s}
.auth-tab.active{background:var(--bg);color:var(--fg)}
.auth-switch{text-align:center;font-size:0.875rem;color:var(--fg-secondary);margin-top:1rem}

/* Empty state */
.empty-state{display:flex;flex-direction:column;align-items:center;padding:3rem 1rem;color:var(--fg-muted)}
.empty-state svg{width:48px;height:48px;margin-bottom:1rem;opacity:0.4}

/* Modal */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.5);display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}
.modal{background:var(--bg);border-radius:var(--radius);max-width:480px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,0.2)}
.modal-header{padding:1.25rem 1.5rem 0.75rem}
.modal-header h3{font-size:1.1rem;font-weight:600}
.modal-header p{font-size:0.875rem;color:var(--fg-secondary);margin-top:0.25rem}
.modal-body{padding:0.75rem 1.5rem}
.modal-footer{padding:0.75rem 1.5rem 1.25rem;display:flex;justify-content:flex-end;gap:0.5rem}
.modal.hidden{display:none}

/* Notify list */
.notify-item{display:flex;gap:0.75rem;padding:0.75rem 0;border-bottom:1px solid var(--border)}
.notify-item:last-child{border-bottom:none}
.notify-icon{width:16px;height:16px;margin-top:3px;flex-shrink:0}
.notify-msg{font-size:0.875rem}
.notify-time{font-size:0.75rem;color:var(--fg-muted);margin-top:0.25rem}

/* Price */
.price{font-size:1.1rem;font-weight:700;display:flex;align-items:center;gap:0.25rem}
.duration{font-size:0.8125rem;color:var(--fg-secondary);display:flex;align-items:center;gap:0.25rem}
.expiry-note{margin-top:0.75rem;padding:0.5rem 0.75rem;background:var(--bg-accent);border-radius:var(--radius);font-size:0.8125rem;color:var(--fg-secondary);display:flex;align-items:center;gap:0.5rem}

/* Subscription item */
.sub-item{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap}
.sub-meta{font-size:0.8125rem;color:var(--fg-secondary);margin-top:0.25rem}

/* Switch */
.switch{position:relative;width:40px;height:22px;display:inline-block}
.switch input{opacity:0;width:0;height:0}
.switch .slider{position:absolute;inset:0;background:var(--input-border);border-radius:11px;cursor:pointer;transition:0.2s}
.switch .slider::before{content:'';position:absolute;width:16px;height:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:0.2s}
.switch input:checked+.slider{background:var(--primary)}
.switch input:checked+.slider::before{transform:translateX(18px)}

/* Responsive */
@media(max-width:768px){
  .auth-hero{display:none}
  .form-row{grid-template-columns:1fr}
  .stats-grid{grid-template-columns:1fr 1fr}
  .service-grid{grid-template-columns:1fr}
  .tabs{gap:0;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tab{padding:0.5rem 0.75rem;font-size:0.8rem}
  .modal{margin:0.5rem;max-width:calc(100vw - 1rem)}
  .modal-header{padding:1rem 1rem 0.5rem}
  .modal-body{padding:0.5rem 1rem}
  .modal-footer{padding:0.5rem 1rem 1rem}
  .card-header{padding:0.75rem 1rem 0.5rem}
  .card-content{padding:0.5rem 1rem 1rem}
  .section-title{font-size:1.1rem}
  .container{padding:0 0.75rem}
  .sub-item{flex-direction:column;gap:0.5rem}
}
@media(max-width:480px){
  .stats-grid{grid-template-columns:1fr 1fr}
  .stat-card{padding:0.75rem}
  .stat-value{font-size:1.25rem}
  .stat-label{font-size:0.75rem}
  .header-inner{flex-wrap:wrap;padding:0.5rem 0.75rem}
  .header-title{font-size:1rem}
  .btn-sm{padding:0.3rem 0.6rem;font-size:0.75rem}
  .toast-container{left:0.75rem;right:0.75rem;bottom:0.75rem}
  .toast{max-width:100%}
  .auth-form-side{padding:1.25rem}
  .auth-form-wrap{max-width:100%}
  .consent-box{max-height:120px;font-size:0.7rem}
}
@media(max-width:360px){
  .stats-grid{grid-template-columns:1fr}
  .tabs{gap:0}
  .tab{padding:0.4rem 0.5rem;font-size:0.75rem}
}

/* Utility */
.flex{display:flex}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}
.justify-between{justify-content:space-between}.gap-1{gap:0.25rem}.gap-2{gap:0.5rem}.gap-3{gap:0.75rem}.gap-4{gap:1rem}
.mt-1{margin-top:0.25rem}.mt-2{margin-top:0.5rem}.mt-3{margin-top:0.75rem}.mt-4{margin-top:1rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}
.text-sm{font-size:0.875rem}.text-xs{font-size:0.75rem}.text-muted{color:var(--fg-secondary)}.font-medium{font-weight:500}.font-bold{font-weight:700}
.w-full{width:100%}.hidden{display:none!important}
.text-center{text-align:center}
.space-y-3>*+*{margin-top:0.75rem}
.space-y-4>*+*{margin-top:1rem}
.divide-y>*+*{border-top:1px solid var(--border)}
.section-title{font-size:1.25rem;font-weight:600}
.section-desc{font-size:0.875rem;color:var(--fg-secondary);margin-top:0.25rem}

/* Loading spinner */
.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin 0.6s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.loading-screen{display:flex;align-items:center;justify-content:center;min-height:100vh}

/* Toast */
.toast-container{position:fixed;bottom:1rem;right:1rem;z-index:200;display:flex;flex-direction:column;gap:0.5rem}
.toast{padding:0.75rem 1rem;border-radius:var(--radius);font-size:0.875rem;box-shadow:0 4px 12px rgba(0,0,0,0.15);max-width:360px;animation:slideIn 0.3s ease}
.toast-success{background:#166534;color:#fff}
.toast-error{background:var(--destructive);color:#fff}
.toast-info{background:var(--fg);color:var(--bg)}
@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}
