:root{--primary: #2563EB;--primary-soft: #EFF6FF;--accent: #0EA5E9;--bg: #F4F7FB;--card: #FFFFFF;--text: #0F172A;--sub: #64748B;--border: #E7EBF0;--radius: 14px;--success: #16A34A;--warning: #F59E0B;--danger: #EF4444;--shadow: 0 1px 2px rgba(15,23,42,.05), 0 10px 28px rgba(15,23,42,.05);--shadow-lg: 0 6px 16px rgba(15,23,42,.08), 0 24px 60px -24px rgba(15,23,42,.22);--maxw: 1360px;--side: 240px;--palette-1: #2563EB;--palette-2: #0EA5E9;--palette-3: #38BDF8;--palette-4: #93C5FD}[data-theme=supermarket]{--primary: #2563EB;--primary-soft: #EFF6FF;--accent: #0EA5E9;--bg: #F4F7FB;--card: #FFFFFF;--text: #0F172A;--sub: #64748B;--border: #E7EBF0;--radius: 14px;--palette-1: #2563EB;--palette-2: #0EA5E9;--palette-3: #38BDF8;--palette-4: #93C5FD}[data-theme=restaurant]{--primary: #F97316;--primary-soft: #FFF5EC;--accent: #EF4444;--bg: #FFF9F4;--card: #FFFFFF;--text: #1C1917;--sub: #78716C;--border: #F3E3D6;--radius: 20px;--palette-1: #F97316;--palette-2: #FB923C;--palette-3: #EF4444;--palette-4: #FBBF24}[data-theme=hotel]{--primary: #7C3AED;--primary-soft: #F5F0FF;--accent: #4F46E5;--bg: #FAF8FF;--card: #FFFFFF;--text: #1E1B4B;--sub: #6B7280;--border: #ECE6FB;--radius: 12px;--palette-1: #7C3AED;--palette-2: #4F46E5;--palette-3: #8B5CF6;--palette-4: #A78BFA}[data-theme=ticket]{--primary: #10B981;--primary-soft: #ECFDF5;--accent: #06B6D4;--bg: #F3FBF8;--card: #FFFFFF;--text: #064E3B;--sub: #4B7A6B;--border: #D9F0E6;--radius: 16px;--palette-1: #10B981;--palette-2: #06B6D4;--palette-3: #34D399;--palette-4: #5EEAD4}[data-theme=stay]{--primary: #B45309;--primary-soft: #FBF1E6;--accent: #D97706;--bg: #FBF6F0;--card: #FFFFFF;--text: #292524;--sub: #78716C;--border: #EFE1D3;--radius: 16px;--palette-1: #B45309;--palette-2: #D97706;--palette-3: #C2410C;--palette-4: #E0A458}[data-theme=horse]{--primary: #15803D;--primary-soft: #ECFDF3;--accent: #16A34A;--bg: #F3FBF5;--card: #FFFFFF;--text: #14532D;--sub: #4B7A5E;--border: #D9F0E2;--radius: 16px;--palette-1: #15803D;--palette-2: #16A34A;--palette-3: #22C55E;--palette-4: #4ADE80}[data-theme=company]{--primary: #0F766E;--primary-soft: #ECFDF5;--accent: #0D9488;--bg: #F0FDFA;--card: #FFFFFF;--text: #134E4A;--sub: #5F7A76;--border: #CCFBF1;--radius: 14px;--palette-1: #0F766E;--palette-2: #0D9488;--palette-3: #14B8A6;--palette-4: #2DD4BF}[data-theme=admin]{--primary: #334155;--primary-soft: #F1F5F9;--accent: #64748B;--bg: #F1F5F9;--card: #FFFFFF;--text: #0F172A;--sub: #64748B;--border: #E2E8F0;--radius: 14px;--palette-1: #334155;--palette-2: #64748B;--palette-3: #94A3B8;--palette-4: #CBD5E1}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.card:hover{box-shadow:var(--shadow-lg);transition:box-shadow .2s}.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.card-head .ttl{font-weight:800;font-size:14px;padding-left:10px;border-left:3px solid var(--primary);line-height:1}.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{text-align:left;color:var(--sub);font-weight:700;font-size:12px;padding:10px 12px;border-bottom:1px solid var(--border)}.tbl td{padding:11px 12px;border-bottom:1px solid var(--border);font-weight:600}.tbl tr:last-child td{border-bottom:none}.tbl tbody tr:hover{background:var(--bg)}.tbl.mini{font-size:12px}.tbl.mini th,.tbl.mini td{padding:7px 9px}.tag{font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:20px;display:inline-block}.tag.ok{background:#e7f8ee;color:var(--success)}.tag.warn{background:#fef3e2;color:var(--warning)}.tag.info{background:var(--primary-soft);color:var(--primary)}.btn{border:none;border-radius:10px;padding:8px 14px;font-weight:700;font-size:12.5px;cursor:pointer;transition:.15s;font-family:inherit}.btn-primary{background:var(--primary);color:#fff;box-shadow:0 8px 18px -8px var(--primary)}.btn-primary:hover{filter:brightness(1.05)}.btn-ghost{background:var(--bg);color:var(--text);border:1px solid var(--border)}.btn-ghost:hover{background:var(--border)}.btn-danger{background:var(--danger);color:#fff}.btn-sm{padding:5px 10px;font-size:11.5px;border-radius:8px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.fld-row{margin-bottom:13px}.fld-row label{display:block;font-size:12.5px;font-weight:700;color:var(--sub);margin-bottom:6px}.fld-row input,.fld-row textarea,.fld-row select{width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:9px;background:var(--bg);font-family:inherit;font-size:13px;color:var(--text)}.fld-row input:focus,.fld-row textarea:focus,.fld-row select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:12px;flex-wrap:wrap;gap:10px}.page-head h1{font-size:clamp(18px,2.2vw,23px);font-weight:800;letter-spacing:.3px}.page-head .sub{color:var(--sub);font-size:13px;margin-top:3px}.head-actions{display:flex;gap:10px}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:14px}.kpi{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;box-shadow:var(--shadow);position:relative;overflow:hidden}.kpi:after{content:"";position:absolute;right:-20px;top:-20px;width:60px;height:60px;border-radius:50%;background:var(--primary-soft);opacity:.6}.kpi .label{color:var(--sub);font-size:11.5px;font-weight:600;position:relative}.kpi .val{font-size:20px;font-weight:800;margin:4px 0 2px;letter-spacing:.3px;position:relative}.kpi .delta{font-size:11px;font-weight:700;position:relative}.delta.up{color:var(--success)}.delta.down{color:var(--danger)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.filterbar,.filter-bar{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px;position:sticky;top:0;z-index:8}.seg{display:inline-flex;background:var(--bg);border-radius:10px;padding:3px;gap:2px}.seg button{border:none;background:transparent;padding:7px 13px;border-radius:8px;font-weight:700;font-size:12.5px;color:var(--sub);cursor:pointer;font-family:inherit}.seg button.on{background:var(--card);color:var(--primary);box-shadow:0 1px 3px #0f172a1f}.fld{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--sub)}.fld input[type=date],.fld select{font-family:inherit;font-size:12.5px;padding:7px 10px;border:1px solid var(--border);border-radius:9px;background:var(--bg);color:var(--text)}.fld select{cursor:pointer}.badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;background:var(--primary-soft);color:var(--primary);max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}.chart-svg{width:100%;height:auto;display:block;max-height:150px}.chart-full{position:relative;width:100%;aspect-ratio:1000/300;min-height:180px;max-height:340px}.chart-full .chart-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;max-height:none}.legend{display:flex;flex-direction:column;gap:7px;font-size:11.5px;min-width:90px}.legend-item{display:flex;align-items:center;gap:8px;color:var(--sub)}.legend-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:110px}.legend-pct{font-weight:800;color:var(--text);margin-left:auto}.dot{width:9px;height:9px;border-radius:3px;flex:none}.section-ttl{font-size:14px;font-weight:800;margin:14px 0 10px;display:flex;align-items:center;gap:8px}.section-ttl:before{content:"";width:4px;height:16px;border-radius:3px;background:var(--primary)}.empty-state{text-align:center;padding:40px 20px;color:var(--sub)}.empty-state .empty-icon{font-size:36px;margin-bottom:10px;opacity:.4}.empty-state .empty-text{font-size:14px;font-weight:600}.pagination{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:16px}.pagination button{border:1px solid var(--border);background:var(--card);border-radius:8px;padding:6px 12px;font-size:12.5px;font-weight:600;cursor:pointer;color:var(--text)}.pagination button.active{background:var(--primary);color:#fff;border-color:var(--primary)}.pagination button:disabled{opacity:.4;cursor:not-allowed}.pagination .page-info{font-size:12px;color:var(--sub);margin:0 8px}.hero{display:flex;gap:14px;margin-bottom:14px;flex-wrap:wrap}.hero .card{flex:1;min-width:260px}.pill-row{display:flex;gap:12px;margin-bottom:14px;flex-wrap:wrap}.pill{flex:1;min-width:150px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);display:flex;align-items:center;gap:12px}.pill .pv{font-size:22px;font-weight:800}.pill .pl{font-size:12px;color:var(--sub);font-weight:600}.pill .pic{width:38px;height:38px;border-radius:11px;background:var(--primary-soft);display:flex;align-items:center;justify-content:center;color:var(--primary);font-weight:800;font-size:16px;flex:none}.mini-row{display:flex;gap:12px;margin:14px 0;flex-wrap:wrap}.mini{flex:1;min-width:120px;background:var(--bg);border-radius:12px;padding:12px 14px}.mini .ml{font-size:11.5px;color:var(--sub);font-weight:600}.mini .mv{font-size:18px;font-weight:800;margin-top:3px}.rcpt{font-family:Courier New,monospace;font-size:12px;line-height:1.8;color:#333;background:#fff;border:1px dashed var(--border);border-radius:12px;padding:16px;max-width:280px;margin:0 auto;text-align:center}.rcpt .rd{color:var(--sub)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a6b;z-index:100;display:flex;align-items:center;justify-content:center}.modal{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:24px;min-width:400px;max-width:90vw;max-height:85vh;overflow-y:auto}.modal-title{font-size:18px;font-weight:800;margin-bottom:16px}.modal-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:12px}.res-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.res-card{border:1px solid var(--border);border-radius:12px;padding:14px;background:var(--card);box-shadow:var(--shadow)}.res-card .rt{font-weight:800;font-size:14px;display:flex;align-items:center;gap:8px}.res-card .sw{width:14px;height:14px;border-radius:5px;flex:none}.res-card .rc{font-size:12px;color:var(--sub);margin-top:8px;line-height:1.7}.store-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;margin-top:4px}.store-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;box-shadow:var(--shadow);border-top:4px solid var(--primary);cursor:pointer;transition:.15s}.store-card:hover{transform:translateY(-2px);box-shadow:0 16px 36px -18px #0f172a66}.sc-top{display:flex;align-items:center;gap:8px}.sc-name{font-weight:800;font-size:14px}.sc-type{font-size:11px;color:var(--sub);font-weight:700;margin:5px 0 4px}.sc-sales{font-size:20px;font-weight:800;letter-spacing:-.5px;color:var(--primary)}.sc-sub{font-size:11px;color:var(--sub);margin-top:6px}.bar-mini{height:8px;background:var(--bg);border-radius:6px;overflow:hidden;min-width:90px}.bar-mini span{display:block;height:100%;border-radius:6px}.tbl .num{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.cs-note{background:var(--primary-soft);border:1px solid var(--border);border-radius:12px;padding:12px 14px;font-size:12.5px;color:var(--sub);line-height:1.7;margin-bottom:14px}.cs-note b{color:var(--primary)}.hero-tall{display:flex;gap:14px;margin-bottom:14px;flex-wrap:wrap;align-items:stretch}.hero-tall .card{flex:1;min-width:280px}.room-card{flex:none;width:220px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);border-top:4px solid var(--primary)}.room-card .rn{font-weight:800;font-size:15px}.room-card .rm{font-size:12px;color:var(--sub);margin:4px 0 10px}.room-card .rd{display:flex;justify-content:space-between;font-size:12.5px;margin:5px 0}.room-card .rd b{font-weight:800}.room-scroll{display:flex;gap:14px;overflow-x:auto;padding-bottom:8px;margin-bottom:14px}.dim-seg{position:sticky;top:0;z-index:6;background:var(--bg);padding:6px 0;margin:4px 0}.company-summary-seg{background:transparent;padding:0;gap:6px}.company-summary-sec button{background:#fff;border:1.5px solid var(--border);padding:8px 18px;font-size:13px}.company-summary-seg button.on{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 8px 18px -8px var(--primary)}.funnel{display:flex;flex-direction:column;gap:9px;align-items:center;padding:6px 0}.funnel-bar{height:42px;border-radius:9px;display:flex;align-items:center;justify-content:center;gap:8px;color:#fff;font-weight:700;font-size:13px;box-shadow:var(--shadow)}.ring{width:80px;height:80px;border-radius:50%;display:flex;align-items:center;justify-content:center}.ring-inner{width:56px;height:56px;border-radius:50%;background:var(--card);display:flex;flex-direction:column;align-items:center;justify-content:center}.ring-inner b{font-size:16px;font-weight:800}.ring-inner span{font-size:10px;color:var(--sub)}.gauge{position:relative;width:120px;height:70px;margin:0 auto}.gauge-half{width:120px;height:60px;border-radius:60px 60px 0 0;background:conic-gradient(var(--primary) 0deg,var(--primary) calc(var(--gauge-pct,0)*3.6deg),var(--border) calc(var(--gauge-pct,0)*3.6deg),var(--border) 180deg,transparent 180deg);transform:rotate(180deg);transform-origin:center bottom}.gauge-center{position:absolute;bottom:0;left:50%;transform:translate(-50%);text-align:center}.gauge-val{font-size:20px;font-weight:800}.gauge-label{font-size:11px;color:var(--sub);font-weight:600}.heatbars{display:flex;gap:6px;align-items:flex-end;height:80px;padding:4px 0}.hb{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;justify-content:flex-end}.hb-bar{width:100%;border-radius:4px 4px 0 0;min-height:4px;transition:height .3s}.hb-lab{font-size:10px;color:var(--sub);margin-top:4px;font-weight:600}.hbar{display:flex;flex-direction:column;gap:8px}.hb-row{display:flex;align-items:center;gap:8px}.hb-name{width:80px;font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hb-track{flex:1;height:10px;background:var(--bg);border-radius:6px;overflow:hidden}.hb-fill{height:100%;border-radius:6px;transition:width .3s}.hb-val{font-size:12px;font-weight:800;min-width:40px;text-align:right}.doughnut-wrap{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;padding:10px 0}.doughnut{position:relative}.doughnut-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center}.numcard{font-size:24px;font-weight:800;text-align:center;padding:12px}.fbar-spacer{flex:1}.op{color:var(--primary);font-weight:700;cursor:pointer;margin-right:12px}.op:hover{text-decoration:underline}.report-body .card{margin-bottom:10px}.report-wide{grid-column:1 / -1}.kpi-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-bottom:10px}.kpi-card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:10px 12px}.kpi-label{font-size:11px;color:var(--sub);font-weight:600}.kpi-val{font-size:18px;font-weight:800;margin:2px 0}.kpi-d{font-size:11px;font-weight:700}.kpi-d.up{color:var(--success)}.kpi-d.down{color:var(--danger)}.chip{font-size:12px;font-weight:700;padding:6px 12px;border-radius:20px;background:var(--bg);color:var(--sub);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-block}.chip.on{background:var(--primary-soft);color:var(--primary)}.chips{display:flex;flex-wrap:wrap;gap:6px}.auth-bar{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--card);border-bottom:1px solid var(--border);font-size:12px}.auth-role{font-weight:800;color:var(--primary)}.auth-name{color:var(--sub)}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:6px}
