:root{--navy: #0c263f;--navy-700: #163a5c;--navy-50: #eaf0f6;--orange: #ee4e22;--orange-600: #d9431a;--orange-50: #fdeee8;--amber: #f3a93a;--brand-gradient: linear-gradient(90deg, #f3a93a 0%, #ee4e22 60%);--bg: #eef0f5;--surface: #ffffff;--surface-2: #f6f7fa;--border: #dfe3ea;--border-strong: #c9cfd9;--text: #1b2430;--text-2: #5b6575;--text-3: #8a93a3;--ok: #1f9d55;--ok-50: #e7f6ed;--warn: #d98a00;--warn-50: #fff4dd;--danger: #d93025;--danger-50: #fdecea;--info: #1677c9;--info-50: #e6f1fb;--c1: #1b9cc4;--c2: #f3a93a;--c3: #e2504c;--c4: #0c263f;--radius: 6px;--shadow: 0 1px 2px rgba(12, 38, 63, .06), 0 1px 1px rgba(12, 38, 63, .04);--shadow-lg: 0 12px 40px rgba(12, 38, 63, .25);--sidebar-w: 236px;font-family:Be Vietnam Pro,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);font-size:14px;line-height:1.45}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}a{color:var(--orange);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}img{max-width:100%}.shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;transition:width .15s}.sidebar .brand{height:64px;display:flex;align-items:center;padding:0 16px;border-bottom:1px solid var(--border)}.sidebar .brand img{height:30px;width:auto}.sidebar nav{flex:1;overflow-y:auto;padding:8px 0}.nav-item{display:flex;align-items:center;gap:10px;padding:11px 16px;margin:2px 8px;border-radius:var(--radius);color:var(--text-2);cursor:pointer;-webkit-user-select:none;user-select:none;border:0;background:none;width:calc(100% - 16px);text-align:left}.nav-item:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.nav-item.active{background:var(--navy);color:#fff}.nav-item .chev{margin-left:auto;transition:transform .15s;opacity:.7}.nav-item.open .chev{transform:rotate(180deg)}.nav-item.locked{opacity:.6}.nav-item .lock{margin-left:auto;font-size:11px;background:var(--surface-2);color:var(--text-3);padding:1px 6px;border-radius:10px}.nav-sub{margin:0 8px 6px}.nav-sub a{display:block;padding:9px 16px 9px 44px;color:var(--text-2);border-bottom:1px solid var(--border)}.nav-sub a:last-child{border-bottom:0}.nav-sub a:hover{color:var(--text);text-decoration:none;background:var(--surface-2)}.nav-sub a.active{color:var(--orange);font-weight:600}.upgrade{margin:12px;padding:18px 16px;border-radius:8px;color:#fff;text-align:center;background:radial-gradient(circle at 80% 0%,rgba(255,255,255,.18),transparent 50%),linear-gradient(135deg,var(--navy) 0%,var(--navy-700) 45%,var(--orange) 140%)}.upgrade b{display:block;font-size:15px}.upgrade small{opacity:.8}.upgrade .btn{margin-top:12px;background:#fff;color:var(--orange);border-color:#fff}.sidebar .foot{border-top:1px solid var(--border);padding:8px 0}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:64px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 24px;gap:12px;position:sticky;top:0;z-index:5}.icon-btn{width:32px;height:32px;border-radius:50%;border:1.5px solid var(--orange);color:var(--orange);background:#fff;display:inline-grid;place-items:center;cursor:pointer}.topbar .who{margin-left:auto;display:flex;align-items:center;gap:10px;color:var(--text-2)}.avatar{width:32px;height:32px;border-radius:50%;background:var(--navy-50);color:var(--navy);display:grid;place-items:center;font-weight:600}.lang{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#da251d;color:#ff0;font-size:14px;border:2px solid #fff;box-shadow:0 0 0 1px var(--border)}.help-link{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;color:var(--text-2);background:var(--surface-2);box-shadow:0 0 0 1px var(--border)}.help-link:hover{color:var(--navy);background:var(--navy-50)}.page-head{padding:20px 24px 16px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:flex-end;gap:16px}.page-head h1{margin:0;font-size:20px;font-weight:600}.crumbs{font-size:12px;color:var(--text-3);margin-top:2px}.crumbs a{color:var(--orange)}.page-head .actions{margin-left:auto;display:flex;gap:8px}.content{padding:20px 24px 40px;display:flex;flex-direction:column;gap:16px}.collapsed .sidebar{width:64px}.collapsed .sidebar .label,.collapsed .sidebar .chev,.collapsed .sidebar .lock,.collapsed .nav-sub,.collapsed .upgrade,.collapsed .brand img{display:none}.collapsed .sidebar .brand:after{content:"";width:30px;height:30px;background:url(/rtop-logo.png) 0 50% / auto 30px no-repeat}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card h3{margin:0 0 12px;font-size:14px;font-weight:600}.card .sub{color:var(--text-3);font-size:12px;margin:-8px 0 12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 14px;border-radius:var(--radius);border:1px solid var(--border-strong);background:#fff;cursor:pointer;white-space:nowrap;font-weight:500}.btn:hover{background:var(--surface-2);text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--orange);border-color:var(--orange);color:#fff}.btn.primary:hover{background:var(--orange-600)}.btn.navy{background:var(--navy);border-color:var(--navy);color:#fff}.btn.outline{border-color:var(--info);color:var(--info)}.btn.ghost{border-color:transparent;background:transparent}.btn.danger{color:var(--danger);border-color:var(--danger)}.btn.gray{background:#7a828e;border-color:#7a828e;color:#fff}.btn.sm{height:28px;padding:0 10px;font-size:13px}.toolbar{display:flex;gap:12px;flex-wrap:wrap}.toolbar>*{flex:1 1 200px;max-width:340px}.input,.select,textarea.input{width:100%;height:38px;border:1px solid var(--border-strong);border-radius:4px;padding:0 12px;background:#fff;outline:none}textarea.input{height:auto;min-height:70px;padding:8px 12px;resize:vertical}.input:focus,.select:focus{border-color:var(--navy);box-shadow:0 0 0 3px var(--navy-50)}.input:disabled{background:var(--surface-2);color:var(--text-3)}.pw-wrap{position:relative}.pw-wrap .input{padding-right:42px}.pw-toggle{position:absolute;right:4px;top:4px;width:30px;height:30px;display:grid;place-items:center;border:0;border-radius:4px;background:transparent;color:var(--text-2);cursor:pointer}.pw-toggle:hover{color:var(--navy);background:var(--surface-2)}.pw-toggle:focus-visible{outline:2px solid var(--navy);outline-offset:1px}.search{position:relative}.search .input{padding-left:34px}.search svg{position:absolute;left:11px;top:11px;color:var(--text-2)}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:4px}table.grid{width:100%;border-collapse:collapse}.grid th{font-size:11.5px;text-transform:uppercase;letter-spacing:.02em;font-weight:700;text-align:left;padding:11px 12px;background:#fff;border-bottom:1px solid var(--border);border-right:1px solid var(--border);white-space:nowrap}.grid td{padding:10px 12px;border-bottom:1px solid var(--border);border-right:1px solid var(--border);vertical-align:middle}.grid th:last-child,.grid td:last-child{border-right:0}.grid tbody tr:nth-child(odd) td{background:#f8f9fb}.grid tbody tr:hover td{background:var(--navy-50)}.grid tr:last-child td{border-bottom:0}.grid .center{text-align:center}.grid .num{text-align:right;font-variant-numeric:tabular-nums}.grid .empty{text-align:center;color:var(--text-3);padding:28px}.row-actions{display:flex;gap:6px;justify-content:center}.row-actions button{border:0;background:none;cursor:pointer;color:var(--text-2);padding:4px;border-radius:4px;display:grid}.row-actions button:hover{background:var(--surface-2);color:var(--navy)}.pager{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--text-2);margin-top:12px}.pager .right{margin-left:auto;display:flex;gap:6px;align-items:center}.pager button{min-width:30px;height:30px;border:1px solid var(--border);background:#fff;border-radius:4px;cursor:pointer}.pager button.cur{background:var(--navy);color:#fff;border-color:var(--navy)}.pager select{height:28px;border:1px solid var(--border-strong);border-radius:4px}.badge{display:inline-block;padding:2px 12px;border-radius:999px;font-size:12px;font-weight:600;border:1.5px solid;white-space:nowrap}.badge.green{color:var(--ok);border-color:var(--ok);background:var(--ok-50)}.badge.gray{color:var(--text-2);border-color:var(--border-strong);background:var(--surface-2)}.badge.amber{color:var(--warn);border-color:var(--warn);background:var(--warn-50)}.badge.red{color:var(--danger);border-color:var(--danger);background:var(--danger-50)}.badge.blue{color:var(--info);border-color:var(--info);background:var(--info-50)}.badge.navy{color:var(--navy);border-color:var(--navy);background:var(--navy-50)}.badge.orange{color:var(--orange-600);border-color:var(--orange);background:var(--orange-50)}.pill{display:inline-block;font-size:11.5px;padding:1px 8px;border-radius:4px;background:var(--warn-50);color:#8a5a00;margin:1px 2px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px}.kpi{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px;border-left:4px solid var(--navy)}.kpi:nth-child(2){border-left-color:var(--orange)}.kpi:nth-child(3){border-left-color:var(--c1)}.kpi:nth-child(4){border-left-color:var(--amber)}.kpi .t{font-size:12px;color:var(--text-2)}.kpi .v{font-size:24px;font-weight:600;margin-top:4px;font-variant-numeric:tabular-nums}.kpi .s{font-size:12px;color:var(--text-3)}.grid-2{display:grid;grid-template-columns:2fr 1fr;gap:16px}.grid-2e{display:grid;grid-template-columns:1fr 1fr;gap:16px}.modal-back{position:fixed;inset:0;background:#141c288c;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto;z-index:50}.modal{background:#fff;border-radius:4px;width:100%;max-width:600px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column}.modal.wide{max-width:860px}.modal-h{display:flex;align-items:center;padding:14px 18px;border-bottom:1px solid var(--border);font-weight:600;font-size:15px}.modal-h button{margin-left:auto;border:0;background:none;font-size:22px;line-height:1;cursor:pointer;color:var(--text-2)}.modal-b{padding:18px;display:flex;flex-direction:column;gap:14px}.modal-f{padding:12px 18px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end;background:var(--surface-2)}.field{display:flex;flex-direction:column;gap:6px}.field>label{font-size:13px;font-weight:500}.field .req{color:var(--danger)}.field .hint{font-size:12px;color:var(--text-3)}.row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.row-3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.section-t{color:var(--info);font-weight:600;margin-top:4px}.section-d{font-size:12px;color:var(--text-3);margin-top:-10px}.boxed{border:1px solid var(--border);border-radius:4px;padding:14px;background:var(--surface-2);display:flex;flex-direction:column;gap:10px}.check{display:flex;gap:8px;align-items:flex-start;cursor:pointer}.check input{margin-top:3px;accent-color:var(--navy)}.error-box{background:var(--danger-50);color:var(--danger);padding:10px 12px;border-radius:4px;font-size:13px}.info-box{background:var(--info-50);color:#0b4f86;padding:10px 12px;border-radius:4px;font-size:13px}.muted{color:var(--text-3)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-field{border:1px solid var(--border);border-radius:6px;background:#fff}.fb-field .fb-h{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--surface-2);border-bottom:1px solid var(--border);border-radius:6px 6px 0 0}.fb-field .fb-h .num{font-weight:700;color:var(--navy)}.fb-field .fb-h .tools{margin-left:auto;display:flex;gap:2px}.fb-field .fb-b{padding:12px;display:flex;flex-direction:column;gap:10px}.opt-row{display:flex;gap:6px;align-items:center}.add-types{display:flex;flex-wrap:wrap;gap:8px}.detail-meta{display:grid;grid-template-columns:1fr 1fr;gap:10px 24px;border:1px solid var(--border);padding:12px;border-radius:4px}.detail-meta .k{font-size:11px;text-transform:uppercase;color:var(--text-3);letter-spacing:.03em}.qa{border-bottom:1px solid var(--border);padding:12px 0}.qa:last-child{border-bottom:0}.qa .q{font-weight:600;font-size:13px}.qa .a{margin-top:4px}.qa .note{margin-top:8px;background:var(--surface-2);padding:8px 10px;border-radius:4px;font-size:13px}.qa .note .k{font-size:11px;color:var(--text-3)}.stars{color:var(--amber);letter-spacing:1px}.stars .off{color:#d5d9e0}.thumbs{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}.thumbs img{width:110px;height:110px;object-fit:cover;border-radius:4px;border:1px solid var(--border);cursor:zoom-in;display:block}.photo-stamp-wrap{position:relative;display:inline-block}.photo-stamp{position:absolute;right:4px;bottom:4px;padding:1px 4px;border-radius:3px;background:#0000008c;color:#ffb340;font:600 9px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.2px;pointer-events:none;white-space:nowrap}.photo-stamp.lg{right:12px;bottom:12px;padding:3px 8px;font-size:15px}.chart-legend{display:flex;gap:16px;justify-content:center;font-size:12px;color:var(--text-2);margin-top:6px;flex-wrap:wrap}.chart-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}.bar-row{display:grid;grid-template-columns:minmax(120px,1.4fr) 3fr 48px;gap:10px;align-items:center;font-size:13px;padding:6px 0}.bar-track{height:10px;background:var(--surface-2);border-radius:5px;overflow:hidden;display:flex}.qr-list{display:flex;flex-direction:column;gap:12px}.qr-item{display:grid;grid-template-columns:150px 1fr;gap:16px;border:1px solid var(--border);border-radius:6px;padding:12px;align-items:center}.qr-item canvas,.qr-item img{width:150px!important;height:150px!important}.qr-item .meta{display:flex;flex-direction:column;gap:6px;min-width:0}.qr-item .url{font-size:12px;word-break:break-all;color:var(--text-2)}.login-page{min-height:100vh;display:grid;place-items:center;padding:16px;background:radial-gradient(circle at 10% 10%,rgba(243,169,58,.18),transparent 40%),radial-gradient(circle at 90% 90%,rgba(238,78,34,.12),transparent 40%),var(--bg)}.login-card{width:100%;max-width:400px;background:#fff;border-radius:10px;box-shadow:var(--shadow-lg);padding:32px 28px;display:flex;flex-direction:column;gap:16px}.login-card img{width:220px;margin:0 auto 4px;display:block}.login-card .tag{text-align:center;color:var(--text-2);font-size:13px;margin-top:-10px}.locked-page{max-width:520px;margin:60px auto;text-align:center}.locked-page .card{padding:32px}@media(max-width:900px){.grid-2,.grid-2e{grid-template-columns:1fr}.sidebar{position:fixed;z-index:30;transform:translate(-100%);transition:transform .2s}.nav-open .sidebar{transform:none;box-shadow:var(--shadow-lg)}.collapsed .sidebar{width:var(--sidebar-w)}.page-head,.content,.topbar{padding-left:16px;padding-right:16px}.row,.row-3,.detail-meta{grid-template-columns:1fr}.qr-item{grid-template-columns:1fr;justify-items:center}}.r-page{min-height:100vh;background:#f3f4f7;--theme: var(--navy)}.r-wrap{max-width:560px;margin:0 auto;padding-bottom:40px}.r-hero{background:var(--theme);color:#fff;padding:20px 18px 56px;position:relative;overflow:hidden}.r-hero:after{content:"";position:absolute;inset:auto 0 0;height:6px;background:var(--brand-gradient)}.r-hero .logo{height:36px;width:auto;background:#fff;border-radius:6px;padding:4px 8px;margin-bottom:14px}.r-hero .ev{font-size:13px;opacity:.85}.r-hero h1{margin:2px 0 0;font-size:21px;line-height:1.3}.r-hero .type{display:inline-block;margin-top:10px;background:#ffffff29;border-radius:999px;padding:3px 12px;font-size:12.5px}.r-banner{width:100%;max-height:180px;object-fit:cover;display:block}.r-body{margin:-36px 12px 0;position:relative;display:flex;flex-direction:column;gap:12px}.r-card{background:#fff;border-radius:12px;padding:16px;box-shadow:0 2px 8px #0c263f14}.r-card .q{font-weight:600;font-size:15.5px}.r-card .q .req{color:var(--danger)}.r-card .d{font-size:13px;color:var(--text-2);margin-top:2px}.r-card .ctrl{margin-top:12px}.r-card.err{box-shadow:0 0 0 2px var(--danger)}.r-card .errmsg{color:var(--danger);font-size:13px;margin-top:8px}.r-stars{display:flex;gap:6px}.r-stars button{flex:1;aspect-ratio:1;max-width:56px;border:0;background:none;padding:0;cursor:pointer;color:#d5d9e0}.r-stars button.on{color:var(--amber)}.r-stars svg{width:100%;height:100%}.r-stars-l{display:flex;justify-content:space-between;font-size:12px;color:var(--text-3);margin-top:4px;max-width:304px}.r-choice{display:flex;flex-direction:column;gap:8px}.r-choice label{display:flex;align-items:center;gap:10px;border:1.5px solid var(--border);border-radius:10px;padding:12px;cursor:pointer;min-height:48px}.r-choice label.on{border-color:var(--theme);background:var(--navy-50)}.r-choice input{width:18px;height:18px;accent-color:var(--theme)}.r-yesno{display:grid;grid-template-columns:1fr 1fr;gap:10px}.r-yesno button{height:48px;border-radius:10px;border:1.5px solid var(--border);background:#fff;font-weight:600;cursor:pointer}.r-yesno button.on{border-color:var(--theme);background:var(--theme);color:#fff}.r-input{width:100%;border:1.5px solid var(--border);border-radius:10px;padding:12px;font-size:16px;background:#fff}.r-input:focus{outline:none;border-color:var(--theme)}textarea.r-input{min-height:90px;resize:vertical}.r-note-toggle{margin-top:10px;border:0;background:none;color:var(--info);padding:0;font-size:13.5px;cursor:pointer}.r-note{margin-top:8px}.r-photos{display:flex;gap:8px;flex-wrap:wrap}.r-photo{width:92px;height:92px;border-radius:10px;overflow:hidden;position:relative;border:1px solid var(--border)}.r-photo img{width:100%;height:100%;object-fit:cover}.r-photo button{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;border:0;background:#0009;color:#fff;cursor:pointer}.r-addphoto{width:92px;height:92px;border-radius:10px;border:1.5px dashed var(--border-strong);display:grid;place-items:center;color:var(--text-2);cursor:pointer;font-size:12px;text-align:center}.r-consent{font-size:13.5px;display:flex;flex-direction:column;gap:10px}.r-consent label{display:flex;gap:10px;align-items:flex-start}.r-consent input{width:20px;height:20px;flex-shrink:0;margin-top:1px;accent-color:var(--theme)}.r-consent button.link{border:0;background:none;color:var(--info);padding:0;text-decoration:underline;cursor:pointer;font-size:inherit}.r-submit{height:52px;border:0;border-radius:12px;background:var(--orange);color:#fff;font-size:16px;font-weight:600;width:100%;cursor:pointer}.r-submit:disabled{background:#c8cdd5;cursor:not-allowed}.r-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.r-policy{white-space:pre-wrap;font-size:13.5px;line-height:1.55;max-height:60vh;overflow-y:auto}.r-done{text-align:center;padding:28px 16px}.r-done .ico{width:72px;height:72px;border-radius:50%;margin:0 auto 12px;display:grid;place-items:center;background:var(--ok-50);color:var(--ok)}.r-done .ico.warn{background:var(--warn-50);color:var(--warn)}.r-done .ico.bad{background:var(--danger-50);color:var(--danger)}.r-done h2{margin:0 0 6px;font-size:20px}.r-done .code{display:inline-block;margin-top:14px;font-family:ui-monospace,monospace;font-size:26px;letter-spacing:4px;font-weight:700;color:var(--navy);background:var(--navy-50);border-radius:8px;padding:8px 16px}.r-foot{text-align:center;color:var(--text-3);font-size:11.5px;margin-top:18px}.r-foot img{height:14px;vertical-align:-3px;opacity:.8}.kiosk{min-height:100vh;background:var(--navy);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px;text-align:center;position:relative}.kiosk:before{content:"";position:absolute;top:0;left:0;right:0;height:8px;background:var(--brand-gradient)}.kiosk h1{margin:0;font-size:clamp(22px,3.5vw,40px)}.kiosk .sub{opacity:.8;font-size:clamp(14px,1.8vw,20px)}.kiosk .qr{background:#fff;padding:18px;border-radius:18px}.kiosk .qr canvas{display:block;width:min(62vh,80vw)!important;height:min(62vh,80vw)!important}.kiosk .meter{width:min(62vh,80vw);height:6px;background:#ffffff26;border-radius:3px;overflow:hidden}.kiosk .meter div{height:100%;background:var(--amber);transition:width 1s linear}.kiosk .count{font-size:clamp(16px,2vw,22px)}.kiosk .count b{color:var(--amber);font-size:1.4em}.kiosk .brand{position:absolute;bottom:16px;right:20px;height:26px;opacity:.9;filter:brightness(0) invert(1)}.kiosk .fs{position:absolute;top:20px;right:20px;color:var(--navy)}
