{
  "common": {
    "brand": "KINTEX",
    "appSuffix": "AI Exhibition & Event",
    "actions": {
      "prev": "Back",
      "next": "Next",
      "cancel": "Cancel",
      "close": "Close",
      "home": "Go to Home",
      "viewMore": "View Details",
      "confirm": "Confirm"
    },
    "states": {
      "loading": "Loading…",
      "empty": "Nothing to display."
    },
    "aiWatermark": "AI-generated preview — actual construction may differ",
    "aiNotice": "AI-generated images cannot be used for contracts or review documents — drawings are the construction standard",
    "weekday": {
      "0": "Sun",
      "1": "Mon",
      "2": "Tue",
      "3": "Wed",
      "4": "Thu",
      "5": "Fri",
      "6": "Sat"
    }
  },
  "lang": {
    "select": "Select language"
  },
  "shell": {
    "menu": {
      "home": "Home",
      "search": {
        "placeholder": "Search menu",
        "clear": "Clear search",
        "noResult": "No matching menu"
      },
      "groups": {
        "ops": "Exhibition Ops",
        "design": "Design & Build",
        "visitor": "Visitors & Marketing",
        "finance": "Settlement & Analytics",
        "work": "Workspace",
        "system": "System Admin"
      },
      "items": {
        "dashboard": "Dashboard",
        "exhibitors": "Exhibitors",
        "schedule": "Schedule",
        "halls": "Hall Assignment",
        "boothSales": "Booth Sales",
        "operations": "Onsite Ops",
        "floorplan": "Floorplan Studio",
        "documents": "Docs & Milestones",
        "auctions": "Construction Auction",
        "contractor": "Contractor Booths",
        "logistics": "Move In/Out",
        "visitors": "Visitors",
        "checkin": "Check-in Desk",
        "leads": "Leads",
        "campaigns": "Marketing",
        "sponsorship": "Sponsorship",
        "cms": "Content CMS",
        "settlement": "Settlement",
        "analytics": "Analytics",
        "worklog": "Work Log",
        "workSchedule": "Schedule",
        "message": "Messages",
        "notice": "Notices",
        "meeting": "Meetings",
        "report": "Reports",
        "approval": "Approvals",
        "opinion": "Feedback",
        "search": "Search",
        "appqr": "Mobile App",
        "admin": "Admin Dashboard",
        "users": "Users",
        "roles": "Roles & Permissions",
        "depts": "Departments",
        "companies": "Companies",
        "menus": "Menus",
        "programs": "Programs",
        "roleMenus": "Role-Menu Mapping",
        "codes": "Common Codes",
        "authPolicy": "Auth Policy",
        "loginHistory": "Login History",
        "audit": "Audit Log",
        "errorLog": "Error Log",
        "systemHealth": "System Health",
        "settings": "System Settings",
        "mailConfig": "Mail Config",
        "notifyConfig": "Notify Config",
        "tenants": "Tenants",
        "rulesets": "Rulesets",
        "slides": "Login Slides",
        "msgTemplates": "Messages"
      },
      "sections": {
        "userOrg": "Users & Org",
        "menuAuth": "Menus & Codes",
        "policyLog": "Policy & Logs",
        "statusConfig": "Status & Config",
        "masterEtc": "Master & Others"
      }
    },
    "nav": {
      "events": "Events",
      "exhibit": "Exhibitors",
      "visit": "Visit",
      "transport": "Directions"
    },
    "searchPlaceholder": "Search events",
    "cta": {
      "register": "Visitor Pre-registration"
    },
    "menuOpen": "Open menu",
    "menuClose": "Close menu",
    "homeAria": "{{brand}} home",
    "primaryMenu": "Main menu",
    "mobileMenu": "Mobile menu",
    "footer": {
      "brandDesc": "Korea's largest exhibition and convention center, connecting innovation in business and culture.",
      "quickTitle": "Quick Links",
      "quickSchedule": "Event Schedule",
      "quickExhibit": "Exhibitor Info",
      "quickDirections": "Directions",
      "quickSitemap": "Sitemap",
      "supportTitle": "Support",
      "supportPrivacy": "Privacy Policy",
      "supportTerms": "Terms of Use",
      "supportContact": "Contact Us",
      "contactTitle": "Contact",
      "contactAddress": "217-60 Kintex-ro, Ilsanseo-gu, Goyang-si, Gyeonggi-do",
      "contactTel": "Main line 1899-1001",
      "contactEmail": "exhibition@kintex.com",
      "bottom": "2026 © KINTEX. All Rights Reserved. (10390) 217-60, Kintex-ro, Ilsanseo-gu, Goyang-si"
    },
    "footerbar": {
      "copyright": "© 2026 KINTEX. All rights reserved.",
      "systemOk": "System OK",
      "systemDown": "Maintenance",
      "support": "Support"
    },
    "login": "Log in"
  },
  "home": {
    "heroAria": "About KINTEX",
    "eyebrow": "Global Exhibition Platform",
    "heroTitleLine1": "Exhibitions that connect the world,",
    "heroTitleEm": "KINTEX",
    "heroLead": "Experience new innovation in business and culture unfolding at KINTEX, Korea's largest exhibition and convention center.",
    "ctaRegister": "Visitor Pre-registration",
    "ctaFacility": "View Facilities",
    "eventsAria": "Ongoing and upcoming events",
    "eventsTitle": "Ongoing · Upcoming Events",
    "eventsSub": "Check out the latest happenings at KINTEX right now.",
    "eventsMore": "View Full Schedule",
    "loading": "Loading event information…",
    "empty": "There are no ongoing or upcoming events at this time.",
    "tagExhibition": "EXHIBITION",
    "booth": "{{count}} booths",
    "aiOptimized": "AI Optimized",
    "ongoing": "Ongoing",
    "ended": "Ended",
    "dday": "D-{{n}}",
    "ddayZero": "D-DAY",
    "register": "Pre-register",
    "hallTbd": "Hall to be assigned",
    "transportAria": "Directions",
    "transportTitle": "Directions",
    "transportSub": "Reach KINTEX with even faster accessibility.",
    "gtxTitle": "GTX-A KINTEX Station Now Open",
    "gtxDesc": "A 3-minute walk from KINTEX Station",
    "transit": "Public Transit",
    "transitDesc": "Metropolitan buses and subway",
    "parking": "Parking",
    "parkingDesc": "4,000 vehicles simultaneously",
    "shuttle": "Shuttle Bus",
    "shuttleDesc": "Circulating major hubs",
    "mapAria": "KINTEX location map",
    "mapAddress": "217-60 Kintex-ro, Ilsanseo-gu, Goyang-si",
    "mapPlace": "KINTEX Exhibition Center 1 & 2",
    "mapViewAria": "View map",
    "pageAria": "Main home",
    "greeting": "Hello, {{name}}",
    "greetingGuest": "Hello",
    "viewAll": "View all",
    "loadError": "Failed to load",
    "role": {
      "organizer": "Organizer",
      "exhibitor": "Exhibitor",
      "contractor": "Contractor",
      "hallManager": "Hall Manager",
      "admin": "Admin"
    },
    "kpi": {
      "aria": "Summary metrics"
    },
    "banner": {
      "aria": "Event promo banner",
      "prev": "Previous banner",
      "next": "Next banner",
      "emptyTitle": "No banners registered",
      "emptyDesc": "Registered event banners appear here."
    },
    "showcase": {
      "title": "Ongoing & Upcoming Exhibitions",
      "all": "View all",
      "prev": "Previous",
      "next": "Next",
      "statusOngoing": "Ongoing",
      "statusUpcoming": "Upcoming",
      "emptyTitle": "No exhibitions in this period",
      "emptyCta": "View full schedule",
      "tab": {
        "ongoing": "Ongoing",
        "thisMonth": "This month",
        "nextMonth": "Next month"
      }
    },
    "calendar": {
      "title": "Exhibition Schedule",
      "prev": "Previous month",
      "next": "Next month",
      "today": "Today",
      "all": "All",
      "centerFilter": "Exhibition center filter",
      "yearMonth": "{{y}}.{{m}}",
      "legendOngoing": "Ongoing",
      "legendUpcoming": "Upcoming",
      "legendEnded": "Ended",
      "more": "+{{n}}",
      "moreTitle": "{{date}} exhibitions",
      "popupEmpty": "No exhibitions on this day",
      "listTitle": "Ongoing & Upcoming",
      "listEmpty": "No upcoming exhibitions",
      "listEmptyCta": "View full schedule",
      "loadError": "Failed to load schedule"
    },
    "todo": {
      "title": "My Tasks",
      "noDue": "No due date",
      "emptyTitle": "All done",
      "emptyDesc": "No tasks to handle",
      "emptyCta": "Open notifications"
    },
    "notice": {
      "title": "Notices",
      "more": "More",
      "new": "NEW",
      "pinned": "Pinned",
      "emptyTitle": "No notices",
      "emptyCta": "View all notices"
    },
    "quick": {
      "title": "Quick Actions",
      "editor": "Layout Editor",
      "invite": "Invite Exhibitor",
      "docs": "Documents",
      "settlement": "Settlement",
      "notice": "Write Notice",
      "search": "Search"
    },
    "activity": {
      "title": "Recent Activity",
      "emptyTitle": "No recent activity",
      "emptyCta": "Notification settings"
    },
    "time": {
      "justNow": "just now",
      "minutes": "{{n}} min ago",
      "hours": "{{n}} hr ago",
      "days": "{{n}} days ago"
    },
    "workspace": {
      "title": "My Events",
      "emptyTitle": "No events joined",
      "emptyDesc": "Check your invite link or code",
      "invite": "Verify code",
      "codePh": "Enter invite code"
    },
    "charts": {
      "title": "Exhibition Charts",
      "statusTitle": "Event Status",
      "trendTitle": "Monthly Trend",
      "centerTitle": "Events by Hall",
      "monthSuffix": "",
      "empty": "No data to display"
    },
    "ai": {
      "aria": "KINTEX AI features",
      "title": "KINTEX AI",
      "badge": "AI",
      "subtitle": "AI handles everything from booth design to construction previews and lead analysis",
      "askPh": "Ask anything — e.g., this month’s revenue?",
      "askBtn": "Ask",
      "askAria": "Ask AI",
      "tool": {
        "layout": {
          "title": "AI Booth Layout Studio",
          "desc": "Auto-generate options 1·2·3"
        },
        "gallery": {
          "title": "Construction Preview Gallery",
          "desc": "Nano-Banana AI renders"
        },
        "nlquery": {
          "title": "Natural-Language Query",
          "desc": "Ask, get a table back"
        },
        "rules": {
          "title": "Regulation AI Chatbot",
          "desc": "Grounded rule answers"
        },
        "leads": {
          "title": "Lead AI Scoring",
          "desc": "Auto-analyze hot leads"
        }
      }
    },
    "prodEyebrow": "AI Exhibition Automation Platform",
    "prodTitle": "KINTEX AI Exhibition Operations Platform",
    "prodTagline": "From booth design to construction previews and settlement, all in one flow.",
    "ctaLogin": "Log in",
    "ctaPreReg": "Pre-register",
    "roleAria": "Features by role",
    "roleTitle": "Tailored features for every role",
    "roleSub": "Tools for organizers, exhibitors, contractors, and visitors alike.",
    "stepsAria": "Key features",
    "stepsTitle": "Exhibition operations powered by AI",
    "stepsSub": "From AI layout to construction preview, reverse auction, and real-time settlement."
  },
  "detail": {
    "tabs": {
      "intro": "Overview",
      "program": "Program",
      "speakers": "Speakers",
      "exhibitors": "Exhibitors",
      "transport": "Directions",
      "faq": "FAQ"
    },
    "eyebrow": "KINTEX Exhibition",
    "loadingTitle": "Loading event information…",
    "fallbackTitle": "Event Details",
    "dateTbd": "Dates to be confirmed",
    "placeTbd": "Hall to be assigned",
    "lead": "Check the exhibition details at KINTEX and pre-register.",
    "factDate": "Date",
    "factPlace": "Venue",
    "ctaRegister": "Pre-register",
    "ctaFloorplan": "View Floor Plan",
    "navAria": "Event detail navigation",
    "shareAria": "Share",
    "share": "Share",
    "copyLink": "Copy link",
    "overviewAria": "Exhibition overview",
    "overviewTitle": "Exhibition Overview",
    "overviewLead": "Smart Factory Korea 2026 is the culmination of next-generation manufacturing technology. Discover the latest solutions combining AI, robotics, IoT, and digital twin technology in one place, with over 500 leading companies from around the world participating.",
    "statBooth": "Booths",
    "statVisitors": "Expected Visitors",
    "statVisitorsValue": "30,000+",
    "themesTitle": "Key Exhibition Themes",
    "theme1Title": "AI & Autonomous Robots",
    "theme1Desc": "Smart robot solutions that learn and decide on their own",
    "theme2Title": "Digital Twin & IoT",
    "theme2Desc": "Real-time sync between virtual worlds and real manufacturing sites",
    "theme3Title": "Carbon-Neutral Smart Manufacturing",
    "theme3Desc": "Eco-friendly processes maximizing energy efficiency",
    "programAria": "Program schedule",
    "programTitle": "Program Schedule",
    "day1": "Sep 5 (Day 1)",
    "day2": "Sep 6 (Day 2)",
    "agenda1Title": "The Future of Manufacturing: AI-Driven Productivity Revolution",
    "agenda1Desc": "2030 manufacturing strategies and real-world case studies proposed by global AI scholars",
    "agenda1Room": "Main Conference Hall",
    "agenda2Title": "Combining Industrial 5G and Edge Computing",
    "agenda2Desc": "Real-time process control technology demonstration via lag-free data transmission",
    "agenda2Room": "Seminar Room A",
    "agenda3Title": "Global Buyers Matching Day",
    "agenda3Desc": "One-on-one business meetings between promising overseas companies and domestic suppliers",
    "agenda3Room": "Business Lounge",
    "speakersTitle": "Keynote Speakers",
    "speaker1Role": "AI Research Director | TechCorp",
    "speaker2Role": "CTO | Automatech",
    "speaker3Role": "Chair Professor of Robotics | Korea Univ.",
    "speaker4Role": "Global VP | Digitron",
    "profileAria": "{{name}} profile",
    "faqAria": "Frequently asked questions",
    "faqTitle": "Frequently Asked Questions",
    "faq1Q": "How do I pre-register?",
    "faq1A": "Click the \"Pre-register\" button at the top, choose your type, and enter your information to receive a mobile badge.",
    "faq2Q": "Is there an entry fee?",
    "faq2A": "General visitors are free with pre-registration. On-site registration may be charged.",
    "faq3Q": "Is parking available?",
    "faq3A": "Up to 4,000 vehicles can park simultaneously at KINTEX Exhibition Centers 1 and 2.",
    "fabCta": "Go to Pre-registration"
  },
  "register": {
    "steps": {
      "type": "Type",
      "info": "Info",
      "interest": "Interests",
      "done": "Done"
    },
    "stepsAria": "Pre-registration steps",
    "type": {
      "general": "General Visitor",
      "generalDesc": "General visitors able to attend exhibitions and open sessions",
      "buyer": "Buyer",
      "buyerDesc": "Corporate representatives for B2B matching and business consultations",
      "vip": "VIP",
      "vipDesc": "Invited guests with exclusive lounge and full session access"
    },
    "step0Title": "Select Participant Type",
    "step0Sub": "Please choose your eligibility to participate in the KINTEX exhibition.",
    "typeGroupAria": "Participant type",
    "step1Title": "Enter Basic Information",
    "step1Sub": "Please enter your information for contact and badge issuance.",
    "name": "Name",
    "namePh": "Enter your name",
    "phone": "Phone (Mobile)",
    "email": "Email",
    "emailPh": "example@domain.com",
    "org": "Organization (Company/Institution)",
    "orgPh": "Company or school name",
    "step2Title": "Select Interests",
    "step2Sub": "Select your interests and we'll provide tailored information.",
    "interestsAria": "Interests",
    "interest": {
      "ai": "AI Solutions",
      "factory": "Smart Factory",
      "robotics": "Robotics",
      "bigdata": "Big Data",
      "cloud": "Cloud"
    },
    "consentPrivacy": "Consent to collection and use of personal information",
    "required": "(required)",
    "consentMarketing": "Consent to marketing communications (optional)",
    "consentMore": "View details",
    "errPrivacy": "Please check consent to collection and use of personal information (required).",
    "errName": "Please enter your name.",
    "errEvent": "Event information could not be verified.",
    "doneTitle": "Your pre-registration has been received",
    "doneSub": "{{name}}, your pre-registration is complete. Use your mobile badge at the entrance kiosk.",
    "visitorDefault": "Visitor",
    "badgeAria": "Mobile badge preview",
    "badgeName": "John Doe",
    "badgeCodeLabel": "Badge Code",
    "doneNote": "Scan the QR at the entrance kiosk to print a physical badge.",
    "regNo": "Registration No.: {{id}}",
    "submitting": "Registering…",
    "submit": "Register",
    "eventBrowse": "Browse Events",
    "floorplan": "View Floor Plan"
  },
  "floorplan": {
    "sideAria": "Booth search and list",
    "filtersTitle": "Industry · Zone · Keyword",
    "searchPh": "Search exhibitor or booth number",
    "searchAria": "Search booths",
    "typeFilter": "Booth type filter",
    "hallSelect": "Select hall",
    "allHalls": "All halls",
    "listAria": "Booth list (non-visual alternative)",
    "loading": "Loading booth information…",
    "searchResults": "Search results ({{count}})",
    "noMatch": "No matching booths.",
    "reservedBooth": "Reserved booth",
    "availableBooth": "Available",
    "type": {
      "assembled": "Shell Scheme",
      "independent": "Raw Space",
      "corner": "Corner Booth",
      "island": "Island",
      "default": "Booth"
    },
    "stageAria": "Interactive hall map",
    "boothLayoutAria": "Booth layout",
    "boothAria": "Booth {{no}} {{name}}",
    "loadFail": "Failed to load the floor plan.",
    "noBooth": "No booths to display.",
    "popInfoAria": "{{name}} information",
    "popDetail": "Booth details",
    "directions": "Directions",
    "zoomIn": "Zoom in",
    "zoomOut": "Zoom out",
    "reset": "Reset",
    "myLocation": "My location",
    "legendAria": "Legend",
    "legendAvailable": "Available",
    "legendReserved": "Reserved",
    "legendPublic": "Public"
  },
  "inquiry": {
    "heroAria": "Exhibitor inquiry",
    "heroTitle": "Exhibitor Inquiry",
    "heroLead": "Expand your business to global markets with KINTEX. Our specialist consultants will propose the optimal exhibition space.",
    "cta": "Exhibitor Inquiry",
    "guideAria": "Exhibitor guide",
    "guideTitle": "Exhibitor Guide",
    "booth1Tier": "Entry Tier",
    "booth1Title": "Shell Scheme",
    "booth1Desc": "The most economical choice with basic walls and flooring provided. Recommended for small businesses.",
    "booth1Price": "₩ 2,500,000 / unit",
    "booth2Tier": "Design Freedom",
    "booth2Title": "Raw Space",
    "booth2Desc": "Only space is provided, allowing free design tailored to your brand.",
    "booth2Price": "₩ 2,000,000 / unit",
    "booth3Tier": "Full Solution",
    "booth3Title": "Premium",
    "booth3Desc": "An all-in-one solution including AI-optimized traffic flow design and a custom branding package.",
    "booth3Price": "Inquire separately",
    "boothExampleAria": "{{title}} example",
    "formAria": "Contact us",
    "formTitle": "Contact Us",
    "formSub": "Leave any questions about participation or the exhibition. Our staff will reply within 24 business hours.",
    "contactPhone": "Phone Inquiry",
    "contactPhoneVal": "+82-31-810-8114",
    "contactEmail": "Email Inquiry",
    "contactEmailVal": "exhibit@kintex.com",
    "contactLoc": "Location",
    "contactLocVal": "217-60 Kintex-ro, Ilsanseo-gu, Goyang-si, Gyeonggi-do",
    "loginHintQ": "Already have an account?",
    "loginHintA": "Log in for a faster inquiry",
    "company": "Company",
    "companyPh": "Enter company name",
    "name": "Contact Person",
    "namePh": "Enter your name",
    "contact": "Contact (Email or Phone)",
    "contactPh": "Enter reachable contact information",
    "scale": "Estimated Size",
    "scaleSelect": "Please select",
    "scale1": "1 booth (9sqm)",
    "scale2": "2-4 booths (18-36sqm)",
    "scale3": "5-9 booths (45-81sqm)",
    "scale4": "10 or more",
    "hall": "Preferred Hall",
    "hallSelect": "Select hall",
    "message": "Message",
    "messagePh": "Let us know your participation goals or any special requests.",
    "agree": "I agree to the collection and use of personal information.",
    "required": "(required)",
    "errAgree": "Please agree to the collection and use of personal information.",
    "errName": "Please enter the contact person's name.",
    "errContact": "Please enter a reachable email or phone number.",
    "errMessage": "Please enter your message.",
    "success": "Your inquiry has been received. Reference No. {{no}}",
    "submitting": "Sending…",
    "submit": "Send Inquiry"
  },
  "microsite": {
    "introAria": "About {{brand}}",
    "eyebrow": "KINTEX Exhibitor",
    "ctaMeeting": "Book a Meeting",
    "ctaBrochure": "Company Brochure",
    "defaultBrand": "Hanbit Robotics Inc.",
    "defaultTagline": "Intelligent robotics solutions that move the future",
    "defaultBoothLoc": "Booth A-102 · Hall 7",
    "boothUndetermined": "TBD",
    "boothPrefix": "Booth",
    "boothLocLabel": "KINTEX exhibition booth location",
    "viewMap": "View Floor Plan",
    "productsAria": "Core product lineup",
    "productsTitle": "Core Product Lineup",
    "productsSub": "Featured products you can meet on site.",
    "product": "Product",
    "product1Tag": "Industrial COBOT",
    "product1Title": "HR-A1 Collaborative Robot",
    "product1Desc": "An industrial collaborative robot with high precision and safety, designed with human collaboration as the top priority.",
    "product2Tag": "Smart Logistics",
    "product2Title": "HR-M3 Autonomous AMR",
    "product2Desc": "An autonomous mobile robot maximizing smart factory logistics efficiency, with real-time obstacle avoidance and route optimization.",
    "product3Tag": "AI Vision",
    "product3Title": "HR-Q Vision Scanner",
    "product3Desc": "Flawless quality inspection based on AI deep learning. Ultra-precise 3D scanning that catches even the tiniest defects.",
    "productImgAria": "{{title}} image",
    "previewAria": "Booth preview",
    "previewTitle": "Booth Preview",
    "previewSub": "AI-generated preview booth images. Actual construction results may differ.",
    "galleryMain": "Main Exhibition Zone",
    "galleryVip": "VIP Lounge",
    "galleryAria": "{{label}} AI-generated preview image",
    "watermark": "AI-generated preview image — actual construction results may differ",
    "meetingAria": "Book a meeting",
    "ctaBanner": "We propose customized robotics solutions tailored to your business.",
    "ctaBannerBtn": "Book a Meeting Now"
  },
  "ticket": {
    "viewPurchase": "Buy Tickets",
    "viewManage": "Manage · Cancel",
    "viewSwitchAria": "Switch ticket view",
    "type": {
      "general": "General",
      "generalDesc": "General visitors and individual participants",
      "generalPrice": "₩0 (pre-registration discount)",
      "buyer": "Buyer",
      "buyerDesc": "For industry professionals and buyers only",
      "buyerPrice": "Free · Screening required",
      "group": "Group (10+ tickets)",
      "groupDesc": "For corporate group visits only",
      "groupPrice": "₩9,000 / person",
      "vip": "VIP",
      "vipDesc": "Exhibition all-pass + VIP lounge access",
      "vipPrice": "₩50,000"
    },
    "steps": {
      "s1": "Event · Type",
      "s2": "Buyer",
      "s3": "Payment",
      "s4": "Done"
    },
    "stepsAria": "Booking steps",
    "bannerTitle": "Smart Factory Korea 2026",
    "bannerDate": "2026.09.05 – 09.08",
    "bannerPlace": "Exhibition Center 2, Hall 7",
    "posterAria": "Event poster",
    "loginBanner": "Log in to automatically save your booking history.",
    "loginLink": "Log in",
    "sample": "Sample data",
    "h2Type": "Select Ticket Type",
    "aiOptimized": "AI OPTIMIZED",
    "off10": "10% OFF",
    "soldout": "Sold Out",
    "qtyAria": "{{name}} quantity",
    "decrease": "Decrease",
    "increase": "Increase",
    "h2Booker": "Booker Information",
    "bookerName": "Name",
    "bookerNamePh": "Full name",
    "bookerTel": "Phone",
    "bookerEmail": "Email (ticket delivery)",
    "consentPrivacy": "Consent to collection and use of personal information",
    "required": "(required)",
    "consentMarketing": "Consent to marketing communications (optional)",
    "h2Pay": "Payment Method",
    "payCard": "Credit Card",
    "payEasy": "Easy Pay",
    "payBank": "Bank Transfer",
    "payGroupAria": "Payment method",
    "pgNote": "Payment is processed on the PG provider's secure page, and card information is not stored on this site. All transactions are protected by 256-bit SSL encryption. (PG not integrated — demo flow)",
    "doneTitle": "Your booking has been received",
    "doneNo": "KTX-2026-0000-DEMO",
    "doneSub": "We'll email you the ticket (upon live integration). Total {{count}} tickets · Payment {{total}}",
    "sampleReady": "Sample data · Payment coming soon",
    "walletBtn": "Open Mobile Ticket Wallet",
    "manageBtn": "Manage / Cancel Booking",
    "summaryAria": "Booking summary",
    "summaryTitle": "Booking Summary",
    "summaryCount": "Selected quantity",
    "count": "{{n}} tickets",
    "subtotal": "Subtotal",
    "discount": "Discount",
    "finalTotal": "Final payment amount",
    "nextStep": "Continue to next step",
    "freeDone": "Complete Free Booking",
    "pay": "Pay",
    "payProceed": "Proceed to Payment",
    "customerCenter": "Customer center 1588-0000 (weekdays 09–18)",
    "manageTitle": "Manage · Cancel Booking",
    "manageSub": "You can look up and cancel non-member bookings.",
    "lookNo": "Booking number",
    "lookNoPh": "KTX-YYYY-XXXXXX",
    "lookEmail": "Email",
    "lookEmailPh": "example@email.com",
    "lookBtn": "Look up",
    "loginToView": "Log in to view my bookings",
    "notLooked": "Enter your booking number and email to look up. (Sample: enter any value and look up)",
    "booked": "Booking complete",
    "bookNoLabel": "Booking No.",
    "paidAt": "Paid at",
    "colType": "Type",
    "colQty": "Qty",
    "colAmount": "Amount",
    "bookerInfo": "Booker info",
    "totalPaid": "Total paid",
    "refundTitle": "Cancellation · Refund Policy",
    "refundD7": "7 days before visit (D-7)",
    "refundD7Val": "100% refund",
    "refundD3": "3 days before visit (D-3)",
    "refundD3Val": "50% refund",
    "refundDay": "Day of visit",
    "refundDayVal": "0% (non-refundable)",
    "refundEst": "Current estimated refund",
    "cancelBooking": "Cancel Booking",
    "refundNote": "Refunds are processed to the original payment method via the PG provider.",
    "aiHelper": "AI Settlement Assistant",
    "aiHelperDesc": "For credit card installment payments, restoring your limit through the card company may take about 3–5 business days after cancellation.",
    "cancelModalAria": "Confirm booking cancellation",
    "cancelModalTitle": "Cancel this booking?",
    "cancelModalDesc": "A 100% refund (₩40,000) applies based on D-15. Refunds are processed to the original payment method via the PG provider, with actual refunds upon live integration.",
    "cancelConfirm": "Cancel",
    "remaining": "{{n}} left",
    "saleClosed": "Not on sale",
    "free": "Free",
    "emptyProducts": "No tickets are currently on sale.",
    "selectPrompt": "Please select a ticket type.",
    "errName": "Please enter your name.",
    "errContact": "Please enter your contact number.",
    "errPrivacy": "Please agree to the collection and use of personal information.",
    "processing": "Processing…",
    "approvalNo": "Approval No.",
    "ticketCodes": "Issued tickets",
    "lookContact": "Contact",
    "lookContactPh": "Contact used when booking",
    "lookupHint": "Enter your booking number and contact to look up.",
    "notFound": "No matching booking found. Please check your booking number and contact."
  },
  "login": {
    "title": "Log In",
    "sub": "Welcome to the KINTEX Exhibition Management System.",
    "email": "Email",
    "emailPh": "name@company.com",
    "password": "Password",
    "remember": "Remember me",
    "forgot": "Forgot password",
    "errResponse": "We couldn't process the login response. Please try again.",
    "errLocked": "Login attempts are temporarily restricted. Please try again shortly.",
    "errNotImpl": "The login service is being prepared. Please try again shortly.",
    "errGeneric": "An error occurred while logging in.",
    "submitting": "Logging in…",
    "submit": "Log In",
    "signupPrompt": "Don't have an account yet?",
    "signup": "Sign Up",
    "or": "or",
    "internalLogin": "Log in with KINTEX internal account",
    "inviteLink": "Join with an invite code →",
    "copyright": "© 2026 KINTEX. All rights reserved.",
    "wsTitle": "Event Workspace",
    "wsSub": "Select an event you are participating in.",
    "wsEmptyTitle": "No events joined",
    "wsEmptyDesc": "Check your invite link or join with an invite code.",
    "wsInvite": "Join with an invite code",
    "prodTagline": "KINTEX AI Exhibition Operations Platform"
  },
  "signup": {
    "title": "Sign Up",
    "desc": "Create a KINTEX AI Exhibition Management account. Company name and invite code are optional.",
    "email": "Email",
    "emailPh": "name@company.com",
    "name": "Name",
    "namePh": "John Doe",
    "password": "Password",
    "passwordPh": "8+ characters",
    "password2": "Confirm Password",
    "password2Ph": "Re-enter password",
    "company": "Company (optional)",
    "companyPh": "KINTEX Inc.",
    "invite": "Invite Code (optional)",
    "invitePh": "INV-XXXX",
    "mismatch": "Passwords do not match.",
    "errNotImpl": "The sign-up service is being prepared. Please try again shortly.",
    "errConflict": "This email is already registered.",
    "errGeneric": "An error occurred while signing up.",
    "noticePending": "Your account has been created. You can log in after administrator approval.",
    "noticeActive": "Your account has been created. Please log in now.",
    "doneTitle": "Sign-up Complete",
    "goLogin": "Go to Login",
    "cancel": "Cancel",
    "submitting": "Signing up…",
    "submit": "Sign Up"
  },
  "forgot": {
    "requestTitle": "Forgot Password",
    "requestDesc": "We'll send a verification code to your registered email. If the account exists, an email will be sent.",
    "email": "Email",
    "emailPh": "name@company.com",
    "sending": "Sending…",
    "requestBtn": "Get Verification Code",
    "resetTitle": "Reset Password",
    "resetDesc": "Enter the verification code sent to <0>{{email}}</0> and your new password.",
    "code": "Verification Code",
    "codePh": "Code received by email",
    "newpw": "New Password",
    "newpwPh": "8+ characters",
    "prev": "Back",
    "changing": "Changing…",
    "changeBtn": "Change Password",
    "doneTitle": "Password Changed",
    "doneDesc": "Please log in with your new password.",
    "goLogin": "Go to Login",
    "errInvalid": "The verification code is incorrect or has expired.",
    "errNotImpl": "The password reset service is being prepared. Please try again shortly.",
    "errRequest": "An error occurred during the request.",
    "errReset": "An error occurred during the reset.",
    "cancel": "Cancel"
  },
  "dashboard": {
    "countdown": "Opening D-{{n}}",
    "degradedTag": "Offline — Sample",
    "degradedMsg": "Could not reach the aggregation API; showing demo sample data.",
    "loadError": "Failed to load dashboard metrics.",
    "timelineAria": "Milestone timeline",
    "milestoneEmptyTitle": "No derived schedule",
    "milestoneEmptyDesc": "Milestones appear once the event start date is confirmed.",
    "mstate": {
      "done": "Done",
      "current": "In progress",
      "upcoming": "Upcoming"
    },
    "kpisAria": "Key metrics",
    "kpiEmpty": "No aggregated metrics",
    "exhibitorStatus": "Exhibitor status",
    "sampleTag": "Sample",
    "exhibitorEmptyTitle": "No exhibitor booths",
    "exhibitorEmptyDesc": "Booths appear here once layouts and designs are registered.",
    "colBoothNo": "Booth No.",
    "colCompany": "Company",
    "colStatus": "Design status",
    "feedAria": "Notification feed",
    "feedTitle": "Notifications",
    "feedEmpty": "No new notifications",
    "aerialAria": "Hall aerial view",
    "aerialTitle": "Hall aerial view",
    "aerialShot": "S7 Hall aerial",
    "aerialAlt": "Hall aerial preview image"
  },
  "schedule": {
    "title": "Exhibition Schedule",
    "subtitle": "KINTEX all-hall event scheduling & monitoring — {{n}} events",
    "crawlFallback": "(kintex.com crawl fallback)",
    "yearFilter": "Year filter",
    "allYears": "All years",
    "yearN": "{{y}}",
    "hallFilter": "Hall filter",
    "allHalls": "All halls (1-10)",
    "hall1": "Hall 1 Center (Halls 1-5)",
    "hall2": "Hall 2 Center (Halls 6-10)",
    "catFilter": "Category filter",
    "allCats": "All categories",
    "statusFilter": "Status filter",
    "allStatus": "All statuses",
    "cat": {
      "exhibition": "Exhibition",
      "culture": "Culture & Arts",
      "trade": "Trade & Industry",
      "tech": "Technology"
    },
    "status": {
      "ongoing": "Ongoing",
      "upcoming": "Upcoming",
      "ended": "Ended"
    },
    "catExhibit": "{{cat}} show",
    "apiWait": "Awaiting event API (crawl data)",
    "viewSwitch": "Switch view",
    "viewList": "List",
    "viewCalendar": "Calendar",
    "listLoading": "Loading event list",
    "listAria": "Event list",
    "loadError": "Failed to load the exhibition schedule.",
    "count": "{{n}} events",
    "emptyTitle": "No registered events",
    "emptyDesc": "Adjust filters or create a new event.",
    "newEvent": "New event",
    "period": "Period",
    "assignedHall": "Assigned hall",
    "estVisitors": "Est. visitors",
    "editDetail": "Edit details",
    "viewLogistics": "View move-in/logistics",
    "monthCal": "Month calendar",
    "prev": "Prev",
    "next": "Next",
    "today": "Today",
    "yearMonth": "{{m}}/{{y}}",
    "miniCal": "Mini calendar",
    "prevMonth": "Previous month",
    "nextMonth": "Next month",
    "offlineSample": "Offline — Sample",
    "day": "Day {{d}}",
    "dayHasEvent": "Day {{d}} (has event)",
    "hallUtil": "Hall utilization",
    "hallUtilMonth": "Hall utilization ({{m}}/{{y}})",
    "availTitle": "Hall availability",
    "availMonth": "Hall availability ({{m}}/{{y}})",
    "availHalls": "{{n}} halls total",
    "availFreeDays": "{{free}}/{{total}} days free",
    "availOpen": "Available",
    "availFull": "Full"
  },
  "boothsales": {
    "title": "Booth Sales",
    "subtitleManager": "Manage booth sales inventory — status, price, blocking and settlement",
    "subtitleExhibitor": "Pick an available booth, hold it, then confirm purchase",
    "noEventTitle": "Please select an event",
    "noEventDesc": "No event selected for booth sales.",
    "summaryAria": "Booth sales status summary",
    "stAvailable": "Available",
    "stHeld": "Held",
    "stSold": "Sold",
    "stBlocked": "Blocked",
    "rate": "Rental rate {{rate}} KRW/㎡ ({{ver}})",
    "hallFilter": "Hall filter",
    "allHalls": "All halls",
    "loadError": "Failed to load booth sales inventory.",
    "emptyTitle": "No booths to show",
    "emptyManage": "No booths registered in this event's layout.",
    "emptyExhibitor": "No available booths to select right now.",
    "status": {
      "available": "Available",
      "held": "Held",
      "sold": "Sold",
      "blocked": "Blocked"
    },
    "wonUnit": " KRW",
    "hallLabel": "Hall",
    "areaLabel": "Area",
    "soldTo": "Sold to: {{c}}",
    "hold": "Hold",
    "purchase": "Confirm purchase",
    "release": "Release hold",
    "setPrice": "Set price",
    "block": "Block",
    "unblock": "Unblock",
    "settle": "Generate invoices",
    "settling": "Generating…",
    "heldToast": "Booth held. Confirm your purchase before it expires.",
    "purchasedToast": "Purchase confirmed.",
    "releasedToast": "Hold released.",
    "blockToast": "Booth status updated.",
    "priceToast": "Sale price updated.",
    "settleToast": "Invoices generated — {{created}} new, {{skipped}} kept.",
    "settleFail": "Failed to generate invoices (check permissions).",
    "holdConflict": "This booth is already held by another user or sold/blocked.",
    "purchaseConflict": "Your hold expired or the booth was taken by another user.",
    "blockConflict": "A sold booth cannot be blocked.",
    "actionFail": "Failed to process the request.",
    "pricePrompt": "Enter sale price (KRW). Leave blank to restore area × rate.",
    "priceInvalid": "Enter an amount of 0 or more."
  },
  "settlement": {
    "title": "Settlement & Payment",
    "subtitle": "Manage exhibitor billing & collection status",
    "generate": "Generate invoices",
    "generating": "Generating…",
    "noEventTitle": "Please select an event",
    "noEventDesc": "No event has been designated for settlement.",
    "genDone": "Invoices generated — {{created}} new, {{skipped}} kept.",
    "genError": "Failed to generate invoices. Check permissions or target data.",
    "dashError": "Failed to load settlement aggregation.",
    "kpisAria": "Settlement key metrics",
    "kpiBilled": "Total billed",
    "kpiCollected": "Collected",
    "kpiOutstanding": "Outstanding",
    "kpiOverdue": "Overdue invoices",
    "count": "{{n}}",
    "collectionRate": "Collection rate {{rate}}%",
    "outstandingSub": "Outstanding balance",
    "overdueSub": "Past due date",
    "distTitle": "Billing status distribution",
    "distEmpty": "No aggregated billing",
    "listTitle": "Invoice list",
    "invoices": "Invoices",
    "statusFilter": "Status filter",
    "status": {
      "all": "All",
      "pending": "Unissued",
      "invoiced": "Invoiced",
      "paid": "Paid",
      "overdue": "Overdue",
      "cancelled": "Cancelled"
    },
    "listError": "Failed to load the invoice list.",
    "emptyTitle": "No invoices",
    "emptyManage": "Use Generate invoices above to aggregate billing per exhibitor.",
    "emptyView": "No invoices have been issued yet.",
    "colNo": "Invoice No.",
    "colExhibitor": "Exhibitor",
    "colBilled": "Billed",
    "colPaid": "Paid",
    "colOutstanding": "Outstanding",
    "colDue": "Due date",
    "colStatus": "Status",
    "detail": "Details",
    "prev": "Prev",
    "next": "Next",
    "pageInfo": "{{page}} / {{total}} · {{cnt}} total",
    "modalAria": "Invoice details",
    "invoice": "Invoice",
    "close": "Close",
    "detailError": "Failed to load invoice details.",
    "liItem": "Item",
    "liQty": "Qty",
    "liUnit": "Unit price",
    "liAmount": "Amount",
    "noLines": "No line items",
    "supplyAmount": "Supply amount",
    "vat": "VAT (10%)",
    "grandTotal": "Total billed",
    "paidOutstanding": "Paid / Outstanding",
    "payHistory": "Payment history",
    "noPayments": "No payment records.",
    "won": "KRW {{v}}",
    "issue": "Issue invoice",
    "issuing": "Issuing…",
    "payAmount": "Payment amount",
    "payAmountPh": "Payment amount (KRW)",
    "payMethod": "Payment method",
    "methodTransfer": "Bank transfer",
    "methodCard": "Card",
    "methodOther": "Other",
    "memo": "Memo",
    "memoPh": "Memo (optional)",
    "recordPay": "Record payment",
    "recording": "Recording…",
    "payFail": "Failed to record payment. Check the amount (within total) and permissions.",
    "errPositive": "Please enter an amount greater than 0.",
    "errExceed": "Cannot exceed the outstanding balance.",
    "pgNote": "Actual payment is delegated to an external PG. This screen is for recording payment confirmation only.",
    "managerOnly": "Only organizers/hall managers can record or issue payments.",
    "colCategory": "Type",
    "catRental": "Rental/Utility",
    "catAuctionFee": "Auction fee",
    "reportTitle": "Settlement Report",
    "reportShow": "Show report",
    "reportHide": "Close",
    "reportHint": "Aggregates totals, collection rate and outstanding by category/status, with CSV export.",
    "reportError": "Failed to load the report.",
    "reportCsv": "Download CSV",
    "reportByCategory": "By category",
    "reportByStatus": "By status",
    "reportEmpty": "No invoices to aggregate.",
    "reportNote": "Totals exclude cancelled invoices. Amounts are server-computed.",
    "reportRate": "Collection %",
    "reportCount": "Count",
    "taxTitle": "Tax Invoice",
    "taxNo": "Invoice No.",
    "taxSupplier": "Supplier",
    "taxBuyer": "Buyer",
    "taxItem": "Item",
    "taxNone": "No tax invoice issued yet.",
    "taxIssue": "Issue tax invoice",
    "taxIssuing": "Issuing…",
    "taxIssueFail": "Failed to issue the tax invoice.",
    "cancelledNote": "This invoice has been cancelled.",
    "cancelInvoice": "Cancel invoice",
    "refundPreview": "Refund preview",
    "refundError": "Failed to load the refund estimate.",
    "refundBracket": "Bracket",
    "refundRate": "Refund %",
    "refundBase": "Base (paid)",
    "refundAmount": "Refund",
    "forfeitAmount": "Forfeit",
    "refundManual": "Auto estimate unavailable (e.g. event date not set) — flagged for finance review.",
    "cancelReason": "Cancellation reason",
    "cancelReasonPh": "Reason (optional)",
    "cancelAbort": "Abort",
    "cancelConfirm": "Confirm cancel",
    "cancelling": "Processing…",
    "cancelFail": "Failed to cancel the invoice."
  },
  "hallassign": {
    "title": "Hall Assignment · Auto Quote",
    "subtitle": "Hall×period assignment status and instant rate-ruleset quotes (M1).",
    "start": "From",
    "end": "To",
    "newAssign": "New assignment",
    "board": "Assignment board",
    "boardHint": "Overlapping assignments are shown as conflicts.",
    "forbiddenTitle": "Hall manager board only",
    "forbiddenDesc": "Only KINTEX hall manager accounts can view assignment status. Use the auto quote below.",
    "noHalls": "No hall master data.",
    "noAssign": "No assignment",
    "release": "Release assignment",
    "releaseConfirm": "Release the {{hall}} assignment for {{event}}?",
    "assignedToast": "Hall assigned.",
    "releasedToast": "Assignment released.",
    "releaseFail": "Release failed (check permissions).",
    "conflictErr": "The hall/period overlaps with another event.",
    "assignFail": "Assignment failed.",
    "pickEventHall": "Select an event and a hall.",
    "modalTitle": "Hall assignment",
    "close": "Close",
    "event": "Event",
    "pickEvent": "Select event…",
    "hall": "Hall",
    "pickHall": "Select hall…",
    "occupyStart": "Occupancy start",
    "occupyEnd": "Occupancy end",
    "primary": "Primary hall",
    "note": "Note",
    "optional": "Optional",
    "cancel": "Cancel",
    "assign": "Assign",
    "assigning": "Assigning…",
    "autoQuote": "Auto quote",
    "quoteHint": "Based on rate ruleset · final amount confirmed by KINTEX",
    "startDate": "Start date",
    "endDate": "End date",
    "boothSize": "Booth size (optional)",
    "countPh": "Count",
    "calcQuote": "Calculate quote",
    "calculating": "Calculating…",
    "quoteFail": "Quote calculation failed.",
    "quoteReq": "Enter hall, start and end dates.",
    "qItem": "Item",
    "qBasis": "Basis",
    "qAmount": "Amount",
    "rentalSubtotal": "Rental subtotal",
    "rentalTotal": "Rental total ({{days}} days)",
    "deposit": "Management deposit (separate)",
    "ruleset": "(ruleset {{v}})",
    "openDetail": "Open assignment detail for {{event}}",
    "detailTitle": "Assignment detail",
    "edit": "Edit",
    "dHall": "Hall",
    "dPeriod": "Occupancy period",
    "dStatus": "Status",
    "dNote": "Note",
    "primaryTag": "Primary hall",
    "dConflict": "Conflicts",
    "dNoConflict": "No overlapping assignments.",
    "dQuote": "Auto quote summary",
    "dQuoteNoPeriod": "No occupancy period — quote unavailable.",
    "dQuoteFail": "Could not load quote."
  },
  "ai": {
    "console": {
      "title": "AI Console",
      "subtitle": "Query data in natural language and ask about exhibition regulations. Results are for reference and shown with their basis.",
      "badge": "Reference",
      "tabsAria": "AI console tabs",
      "tabNlquery": "Natural-language query",
      "tabRules": "Regulation chatbot"
    },
    "common": {
      "running": "Running…",
      "provClaude": "Claude response",
      "provOllama": "Ollama response",
      "provRules": "From regulation text",
      "provNone": "No response",
      "unavailable": "The AI feature is temporarily unavailable. Please try again shortly.",
      "invalid": "This query violates safety rules and cannot be executed.",
      "forbidden": "You are not authorized to use this feature.",
      "error": "An error occurred while processing the request."
    },
    "nlquery": {
      "placeholder": "e.g., Show events with status active",
      "inputAria": "Natural-language query question",
      "run": "Query",
      "guardNote": "Only read-only SELECT runs; personal-data columns are never queried. Up to 200 rows.",
      "rowCount": "{{n}} rows",
      "showSql": "Show generated SQL",
      "hideSql": "Hide generated SQL",
      "sqlAria": "Generated SQL",
      "emptyTitle": "No results",
      "emptyDesc": "No data matched the condition. Try rephrasing your question."
    },
    "rules": {
      "placeholder": "e.g., What is the maximum structure height?",
      "inputAria": "Regulation question",
      "run": "Ask",
      "groundNote": "Answers are grounded in the regulation and rate rulesets; if no basis is found we tell you honestly.",
      "citations": "Cited regulations",
      "notFound": "Not found in regulations",
      "degraded": "Regulation summary (AI unavailable)"
    },
    "assistant": {
      "label": "AI Guide",
      "inputAria": "Ask the visit assistant",
      "sendAria": "Send question",
      "chipsLabel": "Frequently asked",
      "chip1": "Any robotics expo this weekend?",
      "chip2": "Where do I park at KINTEX?",
      "chip3": "Recommend a family-friendly exhibition",
      "chip4": "How do I pre-register?",
      "chip5": "How long via GTX-A?",
      "thinking": "Generating answer…",
      "error": "Could not get an answer. Please try again.",
      "retry": "Try again",
      "degraded": "AI guide in maintenance — showing stored-data search results",
      "providerAi": "AI answer",
      "notFound": "Couldn't find that — please check the full schedule and guide.",
      "cardEventsTitle": "Related exhibitions",
      "cardTransportTitle": "Getting here",
      "cardGuideTitle": "Visit info",
      "followupLabel": "Follow-up questions",
      "followup1": "Is it free?",
      "followup2": "Where to park?",
      "followup3": "How to pre-register",
      "citations": "Sources",
      "register": "Pre-register",
      "disclaimer": "AI-generated answer — verify with the official notice."
    }
  },
  "analytics": {
    "title": "Business Analytics",
    "subtitle": "KINTEX operating profitability · exhibitor insights",
    "perspective": "Analysis perspective",
    "operator": "Operator",
    "exhibitor": "Exhibitor",
    "periodAria": "Analysis period",
    "periodEvent": "This event",
    "periodD90": "Last 90 days",
    "periodAnnual": "Annual",
    "exportPdf": "Export PDF",
    "exportExcel": "Export Excel",
    "noEventTitle": "Please select an event",
    "noEventDesc": "No event has been designated for analysis.",
    "offlineSample": "Offline — Sample",
    "degradedMsg": "Could not reach the aggregation API; showing demo sample data.",
    "loadError": "Failed to load business analytics.",
    "kpisAria": "Key metrics",
    "kpiEmpty": "No aggregated metrics",
    "trendAria": "Trend chart",
    "trendTitle": "Revenue · Booth trend",
    "monthlyAgg": "Monthly aggregation",
    "trendHint": "Monthly rental/utility revenue and booth count trend (revenue in KRW).",
    "trendEmptyTitle": "No trend data",
    "trendEmptyDesc": "No revenue/booth records for an aggregable period.",
    "revenue": "Revenue",
    "booth": "Booths",
    "boothsUnit": "{{n}} booths",
    "sectorsAria": "Sector composition",
    "sectorsTitle": "Sector composition",
    "sectorsEmptyTitle": "Sectors not aggregated",
    "sectorsEmptyDesc": "Displayed once the sector classification source (M13) is connected.",
    "perfTable": "Performance table",
    "pnlTitle": "P&L composition",
    "exhibitorPerfTitle": "Exhibitor performance",
    "sampleTag": "Sample",
    "pnlEmptyTitle": "No P&L items",
    "pnlEmptyDesc": "Displayed once booth rental/utility revenue records are aggregated.",
    "colItem": "Item",
    "colAmount": "Amount",
    "colGrade": "Grade",
    "perfEmptyTitle": "Exhibitor performance not aggregated",
    "perfEmptyDesc": "Displayed once the lead/conversion source (M13 visitors) is connected.",
    "colCompany": "Company",
    "colLeads": "Leads",
    "colConversion": "Conversion"
  },
  "global": {
    "sectionAria": "Tenant-wide business analytics",
    "title": "Enterprise analytics (cross-event)",
    "subtitle": "Cross-event revenue comparison · hall utilization trend · exhibitor retention · demand forecast",
    "yearsAria": "Analysis years",
    "years3": "Last 3 years",
    "years5": "Last 5 years",
    "years10": "Last 10 years",
    "loadErrorTitle": "Failed to load global aggregation",
    "loadErrorDesc": "Please try again shortly.",
    "kpisAria": "Global key metrics",
    "kpiEmpty": "No aggregated metrics",
    "evComp": "Cross-event revenue comparison",
    "top8": "Top 8",
    "evCompHint": "Rental + utility revenue ranking of events with booth layouts (in KRW).",
    "evCompEmptyTitle": "No events to compare",
    "evCompEmptyDesc": "Displayed once revenue of events with booth layouts is aggregated.",
    "revenue": "Revenue",
    "retention": "Exhibitor retention",
    "retentionCum": "Cumulative return rate",
    "returning": "returning",
    "retentionEmptyTitle": "Retention by year not aggregated",
    "retentionEmptyDesc": "Displayed once the booth-assigned company source is connected.",
    "retentionRate": "Return rate",
    "occupancy": "Hall utilization trend (monthly)",
    "occupancyHint": "Monthly utilization = event-days ÷ (halls × days in month).",
    "occupancyEmpty": "No utilization data",
    "occupancyRate": "Utilization",
    "forecast": "Demand forecast",
    "forecastTitle": "Demand forecast (hosting trend)",
    "trendProjection": "Trend projection",
    "forecastHint": "Actual annual event count + least-squares linear trend projected 2 years ahead (dotted).",
    "forecastEmptyTitle": "No history to forecast",
    "forecastEmptyDesc": "Displayed once annual hosting history is aggregated.",
    "casesUnit": "{{n}}",
    "actual": "Actual",
    "projected": "Forecast"
  },
  "ops": {
    "title": "Hall Operations",
    "subtitle": "Status based on check-in / utility live aggregation",
    "modeAria": "View mode",
    "live": "Live",
    "history": "History",
    "noEventTitle": "Please select an event",
    "noEventDesc": "No event has been designated for on-site operations.",
    "offlineSample": "Offline — Sample",
    "degradedMsg": "Could not reach the aggregation API; showing demo sample data.",
    "loadError": "Failed to load on-site operations status.",
    "hallStatus": "Hall status",
    "checkinDerived": "Derived from check-in (M10) · distributed by area weight",
    "sensorNoneHalls": "No sensor · assigned hall list",
    "noHallsTitle": "No assigned halls",
    "noHallsDesc": "Displayed once halls are assigned to the event.",
    "busy": "Busy",
    "smooth": "Smooth",
    "moderate": "Moderate",
    "people": "{{n}}",
    "onSiteCheckin": "On-site check-in <0>{{n}}</0>",
    "noCheckinAgg": "No check-in aggregation",
    "powerLoad": "Power load",
    "totalKw": "Total <0>{{v}}</0>kW",
    "utilLoadAgg": "Utility request (M4) load aggregation",
    "noLoadTitle": "No requested load",
    "noLoadDesc": "Displayed per hall once electrical utility requests are received.",
    "kw": "{{v}}kW",
    "hourlyCheckin": "Hourly check-in",
    "hourlyAgg": "Check-in (M10) hourly aggregation",
    "noSeriesTitle": "No check-in trend",
    "noSeriesDesc": "Hourly trend appears once on-site check-ins are recorded.",
    "facilitySensor": "Facility sensor integration",
    "facilitySensorTitle": "Facility sensors (HVAC · Lighting · Parking)",
    "sensorNoneTitle": "Facility sensors not connected",
    "sensorNoneDesc": "HVAC · lighting IoT · parking (iparking) integration is shown once sensors (M14) are connected.",
    "temp": "Temp",
    "humidity": "Humidity",
    "parkingSlots": "{{zone}}: {{occ}}/{{cap}} slots"
  },
  "admin": {
    "deniedTitle": "Access denied",
    "deniedAuthed": "This page is available only to system administrators (Hall Manager · ADMIN). Contact an administrator if you need access.",
    "deniedGuest": "The admin back office is available after login.",
    "overviewTitle": "System Overview",
    "overviewSub": "Real-time metrics and operational status",
    "loginSlides": "Manage login slides",
    "tenantSwitch": "Switch tenant",
    "systemNormal": "System normal",
    "moduleShortcuts": "Admin module shortcuts",
    "offlineSample": "Offline — Sample",
    "degradedMsg": "Could not reach the aggregation API; showing demo sample data.",
    "dashLoadError": "Failed to load the admin dashboard.",
    "kpisAria": "Key metrics",
    "kpiEmpty": "No aggregated metrics",
    "visitorTrend": "Visitor trend",
    "hourlyVisitors": "Hourly visitors",
    "visitors": "Visitors",
    "visitorTrendEmptyTitle": "Visitor trend not aggregated",
    "visitorTrendEmptyDesc": "Hourly trend appears once visitor sensors (M14) are connected.",
    "liveEvents": "Live events",
    "noLiveEvents": "No ongoing events",
    "hallTbd": "Hall unassigned",
    "occupancy": "Occupancy {{n}}%",
    "modUsers": "Users",
    "modRoles": "Roles & Permissions",
    "modCodes": "Common codes",
    "modMenus": "Menus",
    "modAudit": "Audit log",
    "modSettings": "System settings",
    "modRulesets": "Rulesets",
    "modTenants": "Tenants",
    "modMessages": "Messages"
  },
  "tenant": {
    "title": "Tenant Management · Onboarding",
    "subtitle": "Platform super-admin only · add venues via data onboarding without code deployment.",
    "sampleTag": "Sample · Not implemented",
    "sampleNote": "Multi-tenancy (tenant CRUD, onboarding, isolation) is not yet in the backend, so this screen shows the target IA. Live data will be wired after multi-tenancy is introduced.",
    "listAria": "Tenant list",
    "venue": "Venue",
    "notImpl": "Not implemented",
    "addVenue": "Add venue",
    "code": "Code",
    "domain": "Domain",
    "status": "Status",
    "events": "Events",
    "users": "Users",
    "wizardAria": "Onboarding wizard",
    "onboardingOf": "{{name}} onboarding",
    "dataOnboarding": "Data onboarding without code deployment",
    "wiz": {
      "create": {
        "label": "Create tenant",
        "desc": "Register code & display name"
      },
      "domain": {
        "label": "Subdomain",
        "desc": "Assign DNS & branding domain"
      },
      "brand": {
        "label": "Branding",
        "desc": "Logo, colors, public-site theme"
      },
      "master": {
        "label": "Master data entry",
        "desc": "Seed halls, rates, rulesets"
      },
      "admin": {
        "label": "Admin account",
        "desc": "Invite tenant administrator"
      },
      "smoke": {
        "label": "Isolation smoke test",
        "desc": "Verify cross-tenant isolation"
      },
      "activate": {
        "label": "Activate",
        "desc": "Switch to operation"
      }
    },
    "tstatus": {
      "active": "Active",
      "onboarding": "Onboarding",
      "suspended": "Suspended"
    },
    "loadError": "Failed to load tenants.",
    "emptyTitle": "No tenants yet",
    "emptyDesc": "Add a venue to onboard your first tenant.",
    "modalTitle": "Register Tenant",
    "codeHint": "Lowercase letters, digits and hyphens, 2–40 chars (used as subdomain/identifier)",
    "codePlaceholder": "e.g. coex",
    "nameLabel": "Display name",
    "namePlaceholder": "e.g. COEX",
    "domainPlaceholder": "e.g. coex.wise.ai.kr",
    "cancel": "Cancel",
    "save": "Register",
    "saving": "Registering…",
    "created": "Tenant registered.",
    "errCodeRequired": "Tenant code is required.",
    "errCodePattern": "Code must be 2–40 lowercase letters, digits or hyphens.",
    "errDupCode": "This tenant code already exists.",
    "errNameRequired": "Display name is required."
  },
  "ruleset": {
    "title": "Regulation Ruleset Versions",
    "subtitle": "Ruleset version history and rule items for regulation revisions.",
    "readonly": "Read only",
    "readonlyNote": "Rulesets are version-controlled as deployment resources (rulesets/*.json). Editing and version creation are done by replacing resources when regulations are revised; this screen is view-only.",
    "listError": "Failed to load the ruleset list.",
    "noRulesets": "No deployed rulesets",
    "versionHistory": "Version history",
    "rulesCount": "{{n}} rules",
    "effectiveDate": "Effective {{date}}",
    "ruleList": "Rule list",
    "rulesOf": "{{name}} rules ({{n}})",
    "detailError": "Failed to load the full rules.",
    "noRulesTitle": "Ruleset has no rule array",
    "noRulesDesc": "A ruleset that defines only rates/unit prices without rules (e.g. rate master).",
    "colRuleName": "Rule name",
    "colValue": "Value/setting",
    "colLogic": "Logic / Requirement",
    "colSeverity": "Violation level",
    "block": "Block",
    "warn": "Warn",
    "required": "Required",
    "perHall": "Per hall {{unit}}",
    "docNeeded": "Document required: {{doc}}"
  },
  "audit": {
    "title": "Audit Log",
    "subtitle": "Tracks all admin actions (approvals, awards, setting changes) and key domain events. (Integrity preserved)",
    "exportCsv": "Export CSV",
    "filterAria": "Audit log filter",
    "actionType": "Action type",
    "allActions": "All actions",
    "actorId": "Actor ID",
    "actorIdPh": "e.g. user-102",
    "eventId": "Event ID",
    "eventIdPh": "e.g. EVT-2026-01",
    "reset": "Reset",
    "applyFilter": "Apply filter",
    "loadError": "Failed to load the audit log.",
    "tableAria": "Audit log table",
    "emptyTitle": "No audit records match the criteria",
    "emptyDesc": "Adjust or reset filters and search again.",
    "colTime": "Time",
    "colUser": "User",
    "colAction": "Action",
    "colTarget": "Target",
    "colEvent": "Event",
    "colResult": "Result",
    "showing": "Showing <0>{{from}}-{{to}}</0> / <1>{{total}}</1> total",
    "prev": "Prev",
    "next": "Next",
    "rowsShow": "Rows",
    "rowsPerPage": "Rows per page",
    "rowsN": "{{n}}",
    "success": "Success",
    "failure": "Failure",
    "csvTime": "Time",
    "csvActorId": "ActorID",
    "csvActorName": "ActorName",
    "csvAction": "Action",
    "csvTargetType": "TargetType",
    "csvTargetId": "TargetID",
    "csvEventId": "EventID",
    "csvResult": "Result",
    "csvSummary": "Summary"
  },
  "role": {
    "title": "Roles & Permissions (RBAC)",
    "subtitle": "Assign resource permissions per role (Organizer, Exhibitor, Contractor, Hall Manager, Admin, Visitor) in a matrix.",
    "addRole": "Add role",
    "loadError": "Failed to load roles/permissions.",
    "noRolesTitle": "No roles defined",
    "noRolesDesc": "Add a role to configure RBAC.",
    "roleList": "Role list",
    "role": "Role",
    "codePerm": "{{code}} · {{n}} permissions",
    "unused": "Unused",
    "permMatrix": "Permission matrix",
    "rolePerm": "{{name}} permissions",
    "roleInfo": "Role info",
    "deleteConfirm": "Delete the role '{{name}}'?",
    "delete": "Delete",
    "noPerms": "No permissions defined",
    "selectRole": "Select a role",
    "saved": "Role saved.",
    "deleted": "Role deleted.",
    "addRoleModal": "Add role",
    "editRole": "Edit role info",
    "modalDesc": "Permission assignment is managed by checkboxes in the matrix after saving.",
    "roleCode": "Role code *",
    "roleCodePh": "e.g. ORGANIZER",
    "roleName": "Role name *",
    "description": "Description",
    "useYn": "In use",
    "use": "In use",
    "noUse": "Unused",
    "cancel": "Cancel",
    "save": "Save",
    "saving": "Saving…",
    "errRequired": "Role code and name are required.",
    "errDupCode": "This role code already exists."
  },
  "menu": {
    "title": "Menu Management",
    "subtitle": "Manage the per-role navigation menu tree with paths and access roles.",
    "addMenu": "Add menu",
    "loadError": "Failed to load menus.",
    "treeAria": "Menu tree",
    "emptyTitle": "No registered menus",
    "emptyDesc": "Add a menu.",
    "colName": "Menu name",
    "colPath": "Path",
    "colType": "Type",
    "colRole": "Access role",
    "colSort": "Order",
    "colUse": "In use",
    "colManage": "Manage",
    "all": "All",
    "unused": "Unused",
    "used": "In use",
    "edit": "Edit",
    "delete": "Delete",
    "deleteConfirm": "Delete the menu '{{name}}'? Sub-menus, if any, will be cleaned up together.",
    "saved": "Menu saved.",
    "deleted": "Menu deleted.",
    "editMenu": "Edit menu",
    "menuId": "Menu ID (unique key) *",
    "menuIdPh": "e.g. admin-users",
    "menuName": "Menu name *",
    "parent": "Parent menu",
    "topLevel": "(Top level)",
    "path": "Path",
    "pathPh": "e.g. /admin/users",
    "type": "Type",
    "accessRole": "Access role",
    "accessRolePh": "e.g. ADMIN (empty = all)",
    "sort": "Order",
    "useYn": "In use",
    "cancel": "Cancel",
    "save": "Save",
    "saving": "Saving…",
    "errName": "Menu name is required.",
    "errId": "Menu ID (unique key) is required.",
    "errDupId": "This menu ID already exists."
  },
  "code": {
    "title": "Common Code Management",
    "subtitle": "Manage common code groups and code values used in dropdowns and classifications.",
    "addGroup": "Add group",
    "groupLoadError": "Failed to load code groups.",
    "noGroupsTitle": "No code groups",
    "noGroupsDesc": "Add a group to configure common codes.",
    "codeGroup": "Code group",
    "codeValues": "Code values",
    "valuesOf": "{{name}} values",
    "editGroup": "Edit code group",
    "deleteGroup": "Delete group",
    "deleteGroupConfirm": "Delete group '{{name}}' and its codes?",
    "addCode": "Add code",
    "codeLoadError": "Failed to load code values.",
    "noCodesTitle": "No codes",
    "noCodesDesc": "Add a code.",
    "code": "Code",
    "name": "Name",
    "value": "Value",
    "sort": "Order",
    "use": "In use",
    "manage": "Manage",
    "unused": "Unused",
    "used": "In use",
    "edit": "Edit",
    "delete": "Delete",
    "deleteCodeConfirm": "Delete code '{{name}}'?",
    "groupSaved": "Code group saved.",
    "groupDeleted": "Code group deleted.",
    "codeSaved": "Code saved.",
    "codeDeleted": "Code deleted.",
    "groupCode": "Group code *",
    "groupName": "Group name *",
    "description": "Description",
    "useYn": "In use",
    "cancel": "Cancel",
    "save": "Save",
    "saving": "Saving…",
    "errGroupRequired": "Group code and name are required.",
    "errDupGroup": "This group code already exists.",
    "editCode": "Edit code",
    "group": "Group",
    "codeReq": "Code *",
    "nameReq": "Name *",
    "attr1": "Attribute 1 (attr1)",
    "errCodeRequired": "Code and name are required.",
    "errDupCode": "This code already exists."
  },
  "sysuser": {
    "title": "User Management",
    "subtitle": "Manage account creation/editing, role assignment, status (active/locked/disabled), and OTP reset. Passwords are masked and not displayed.",
    "addUser": "Add user",
    "searchAria": "User search",
    "keyword": "Keyword",
    "keywordPh": "Name·Email",
    "role": "Role",
    "status": "Status",
    "all": "All",
    "reset": "Reset",
    "search": "Search",
    "loadError": "Failed to load the user list.",
    "listAria": "User list",
    "emptyTitle": "No users",
    "emptyDesc": "Adjust search criteria or add a user.",
    "colUser": "User",
    "colEmail": "Email",
    "colRole": "Role",
    "colDept": "Dept",
    "colStatus": "Status",
    "colLastLogin": "Last login",
    "colManage": "Manage",
    "hallManagerTag": "Hall Mgr",
    "otpSet": "Set",
    "otpUnset": "Not set",
    "edit": "Edit",
    "lock": "Lock",
    "unlock": "Unlock",
    "otpResetBtn": "Reset OTP",
    "otpResetConfirm": "Reset OTP for {{name}}?",
    "saved": "User saved.",
    "statusChanged": "Status changed.",
    "otpReset": "OTP reset.",
    "active": "Active",
    "locked": "Locked",
    "disabled": "Disabled",
    "editUser": "Edit user",
    "newDesc": "The initial password is not displayed on screen after saving.",
    "editDesc": "Email cannot be edited. Password reset follows a separate policy.",
    "email": "Email *",
    "displayName": "Display name *",
    "dept": "Department",
    "initPassword": "Initial password *",
    "hallManagerCheck": "Hall Manager (internal operator)",
    "cancel": "Cancel",
    "save": "Save",
    "saving": "Saving…",
    "errRequired": "Email and display name are required.",
    "errPassword": "New users require an initial password.",
    "totalUsers": "<0>{{total}}</0> users total",
    "prev": "Prev",
    "next": "Next"
  },
  "settings": {
    "title": "System Settings",
    "subtitle": "Manage system parameters such as global policies, feature toggles, and AI gates. Secret values are masked.",
    "loadError": "Failed to load system settings.",
    "emptyTitle": "No settings registered",
    "emptyDesc": "Add your first setting item in the form below.",
    "saved": "Setting saved.",
    "deleted": "Setting deleted.",
    "deleteConfirm": "Delete the setting '{{key}}'?",
    "general": "General",
    "groupAria": "Settings group {{name}}",
    "secret": "Secret",
    "secretTitle": "Secret — value masked",
    "on": "On",
    "off": "Off",
    "secretPh": "Set (masked) — enter new value to change",
    "save": "Save",
    "delete": "Delete",
    "deleteKey": "Delete {{key}}",
    "secretHint": "The secret value is never exposed. Saving without entering a value keeps the existing value.",
    "addAria": "Add setting",
    "addTitle": "Add / override setting",
    "settingKey": "Setting key",
    "settingKeyPh": "e.g. deadline.utility.days",
    "value": "Value",
    "type": "Type",
    "description": "Description",
    "secretCheck": "Secret (mask value)"
  },
  "slide": {
    "title": "Login Slide Management",
    "subtitle": "Login screen left carousel images/text — the <0>latest 5 by registration order</0> among active slides rotate.",
    "addAria": "Add new slide",
    "addTitle": "Add new slide",
    "imageLabel": "Image (PNG/JPG/WebP, up to 8MB)",
    "preview": "Preview",
    "titleLabel": "Title text",
    "titlePh": "e.g. KINTEX, Asia's leading exhibition & convention center",
    "captionLabel": "Caption (subtext)",
    "captionPh": "e.g. Discover business opportunities across 100,000 sqm of exhibition space.",
    "submitting": "Registering…",
    "submit": "Register slide",
    "listAria": "Slide list",
    "registered": "Registered slides",
    "countActive": "{{total}} total · {{active}} active",
    "emptyTitle": "No registered slides",
    "emptyDesc": "Registered images and text appear in the login carousel. (5 defaults shown when none registered)",
    "live": "Live",
    "inactive": "Inactive",
    "registeredAt": "Registered {{date}}",
    "active": "Active",
    "delete": "Delete",
    "listError": "Failed to load the list.",
    "errImage": "Please select a slide image.",
    "errTitle": "Please enter the title text.",
    "createFail": "Registration failed.",
    "updateFail": "Update failed.",
    "deleteFail": "Deletion failed.",
    "deleteConfirm": "Delete the slide \"{{title}}\"?"
  },
  "approval": {
    "queueTitle": "Approval Inbox",
    "search": "Search",
    "searchPlaceholder": "Search title...",
    "pendingCount": "Pending",
    "pendingList": "Documents awaiting my approval",
    "colTitle": "Title",
    "colDocType": "Type",
    "colDrafter": "Drafter",
    "colSubmitted": "Submitted",
    "colStep": "Step",
    "colStatus": "Status",
    "colAction": "Action",
    "open": "Open",
    "emptyPending": "No documents to approve",
    "status": {
      "DRAFT": "Draft",
      "SUBMITTED": "Submitted",
      "IN_PROGRESS": "In progress",
      "APPROVED": "Approved",
      "REJECTED": "Rejected",
      "CANCELED": "Canceled"
    },
    "reviewTitle": "Approval Review",
    "version": "Version",
    "drafter": "Drafter",
    "step": "Step",
    "demoMode": "Preview (demo)",
    "downloadOriginal": "Download original",
    "previewAria": "Document preview",
    "lineAria": "Approval line & history",
    "docBody": "Body",
    "line": "Approval line",
    "history": "History",
    "noHistory": "No history yet",
    "lineStatus": {
      "WAIT": "Waiting",
      "CURRENT": "In review",
      "APPROVED": "Approved",
      "REJECTED": "Rejected",
      "SKIPPED": "Skipped"
    },
    "action": {
      "SUBMIT": "Submit",
      "APPROVE": "Approve",
      "REJECT": "Reject",
      "RESUBMIT": "Resubmit",
      "CANCEL": "Cancel"
    },
    "approve": "Approve",
    "reject": "Reject",
    "approvedDone": "Approved.",
    "rejectedDone": "Rejected.",
    "canActHint": "You are the current approver for this document.",
    "notApproverHint": "Only the current-step approver can act.",
    "demoFootNote": "Select a document from the approval inbox to approve or reject.",
    "demoHint": "No approval document selected. Please open one from the approval inbox.",
    "commentPlaceholder": "Enter a comment (required to reject)",
    "comment": "Comment",
    "boxTitle": "Approvals",
    "compose": "New Draft",
    "composeTitle": "New Approval Draft",
    "resubmitTitle": "Resubmit Rejected Document",
    "backToList": "Back to list",
    "tab": {
      "PENDING": "To Approve",
      "DRAFTED": "My Drafts",
      "REJECTED": "Rejected",
      "DONE": "Completed"
    },
    "empty": {
      "PENDING": "No documents to approve",
      "DRAFTED": "No submitted documents",
      "REJECTED": "No rejected documents",
      "DONE": "No completed documents"
    },
    "resubmitBtn": "Resubmit",
    "draftSave": "Save Draft",
    "submitDoc": "Submit",
    "cancel": "Cancel",
    "saving": "Processing…",
    "docType": "Document Type",
    "docTypes": {
      "GENERAL": "General",
      "DESIGN": "Design/Drawing",
      "DOCUMENT": "Document",
      "EXPENSE": "Expense",
      "ETC": "Other"
    },
    "titleLabel": "Title",
    "titlePlaceholder": "Enter the document title",
    "contentLabel": "Content",
    "contentPlaceholder": "Enter the document content",
    "err": {
      "titleRequired": "Please enter a title.",
      "lineRequired": "Add at least one approver to the line."
    },
    "createdDraft": "Saved as draft.",
    "submittedDone": "Submitted for approval.",
    "resubmittedDone": "Resubmitted for approval.",
    "rejectedReason": "Rejection Reason",
    "canResubmitHint": "This draft was rejected. You can edit and resubmit it.",
    "lineEditor": {
      "empty": "No approvers yet. Add an approver.",
      "stepNo": "Step {{n}}",
      "idPlaceholder": "Approver ID",
      "namePlaceholder": "Display name (optional)",
      "approverId": "Step {{n}} approver ID",
      "approverName": "Step {{n}} approver name",
      "moveUp": "Move up",
      "moveDown": "Move down",
      "remove": "Remove approver",
      "add": "Add approver"
    },
    "rejectModalTitle": "Reject Document",
    "approveModalTitle": "Approve Document",
    "rejectReason": "Rejection reason",
    "rejectReasonPlaceholder": "Enter the rejection reason",
    "rejectReasonHint": "The reason is sent to the drafter and shown on resubmission.",
    "commentOptional": "Enter a comment (optional)"
  },
  "auction": {
    "boq": {
      "title": "Bill of Quantities (auto)",
      "error": "Failed to load the bill of quantities.",
      "scopeBooth": "Booth {{label}}",
      "scopeEvent": "All booths in the event",
      "summary": "{{count}} booth(s) · {{area}}㎡",
      "colSeq": "No",
      "colTrade": "Trade",
      "colItem": "Item",
      "colQty": "Qty",
      "colUnit": "Unit",
      "colBasis": "Basis"
    }
  },
  "logistics": {
    "title": "Logistics Hub",
    "subtitle": "Move-in/out docks · equipment · rentals · inbound tracking",
    "tabsAria": "Switch logistics function",
    "tabs": {
      "dock": "Dock Booking",
      "equipment": "Equipment",
      "rental": "Rentals",
      "inbound": "Inbound"
    },
    "boothNo": "Booth No.",
    "qty": "Qty",
    "estimate": "Estimated amount",
    "submitting": "Processing…",
    "submitOk": "Request received.",
    "submitErr": "Request failed.",
    "statusUpdated": "Status updated.",
    "loadErr": "Failed to load logistics data.",
    "serverAmountNote": "Amount is finalized by the server",
    "equipment": {
      "formTitle": "Equipment Request",
      "item": "Equipment",
      "days": "Days of use",
      "daysUnit": "d",
      "useDate": "Planned use date",
      "submit": "Request Equipment",
      "listTitle": "Requests",
      "empty": "No requests yet",
      "emptyDesc": "Request forklifts, lifts and more.",
      "approve": "Approve",
      "reject": "Reject",
      "rejectReason": "Rejected due to site conditions",
      "done": "Mark done",
      "st": {
        "requested": "Requested",
        "approved": "Approved",
        "rejected": "Rejected",
        "done": "Done"
      }
    },
    "rental": {
      "formTitle": "Rental Order",
      "item": "Rental item",
      "start": "Start date",
      "end": "End date",
      "submit": "Place Order",
      "listTitle": "Orders",
      "empty": "No orders yet",
      "emptyDesc": "Order tables, chairs, monitors and more.",
      "period": "{{days}} day(s)",
      "confirm": "Confirm",
      "cancel": "Cancel",
      "deliver": "Mark delivered",
      "st": {
        "ordered": "Ordered",
        "confirmed": "Confirmed",
        "cancelled": "Cancelled",
        "delivered": "Delivered"
      }
    },
    "inbound": {
      "formTitle": "Register Inbound Shipment",
      "trackingNo": "Tracking no.",
      "carrier": "Carrier",
      "itemDesc": "Cargo",
      "eta": "ETA date",
      "submit": "Register Shipment",
      "submitSub": "Track inbound status after registering",
      "listTitle": "Inbound Status",
      "empty": "No inbound shipments",
      "emptyDesc": "Register pre-delivery tracking numbers.",
      "st": {
        "registered": "Registered",
        "inbound_scheduled": "Scheduled",
        "arrived_warehouse": "At warehouse",
        "delivered_booth": "Delivered to booth"
      },
      "advance": {
        "inbound_scheduled": "Mark scheduled",
        "arrived_warehouse": "Mark arrived",
        "delivered_booth": "Mark delivered to booth"
      }
    }
  },
  "appqr": {
    "title": "Download the KINTEX Exhibition App",
    "subtitle": "Install the mobile app",
    "intro": "Scan the QR code or use the button below to install the KINTEX Exhibition App.",
    "about": "App size {{size}}",
    "appName": "KINTEX AI Exhibition App",
    "builtAt": "Built {{date}}",
    "download": "Download APK",
    "copyLink": "Copy link",
    "copied": "Copied",
    "refresh": "Refresh",
    "retry": "Retry",
    "qrAlt": "App download QR code",
    "iosNote": "iOS support will be available after the official App Store release.",
    "notReady": {
      "title": "App is being prepared",
      "desc": "The installation file has not been published yet. Please try again shortly."
    },
    "steps": {
      "heading": "How to install",
      "s1": "Scan the QR code with your phone camera.",
      "s2": "Open the link shown and download the APK.",
      "s3": "Allow \"Install unknown apps\".",
      "s4": "After installation, open the app and sign in."
    },
    "eyebrow": "Mobile app",
    "platformChip": "Android",
    "qrHint": "Scan the QR with your phone camera.",
    "features": {
      "heading": "Key features",
      "sub": "Handle exhibition tasks on mobile — from on-site operations to approvals and visualization.",
      "checkin": {
        "title": "On-site check-in",
        "desc": "Verify move-in passes and process checklists right on site."
      },
      "inspection": {
        "title": "On-site inspection",
        "desc": "Hall managers inspect and approve booth construction with photos."
      },
      "gallery": {
        "title": "Visualization gallery",
        "desc": "Browse AI-generated post-construction preview images in a gallery."
      },
      "approval": {
        "title": "Documents & approvals",
        "desc": "Review submitted documents and approval status on the go."
      },
      "notify": {
        "title": "Real-time alerts",
        "desc": "Receive auction rankings, approval results, and site notices via push."
      },
      "offline": {
        "title": "Offline support",
        "desc": "Save and sync your work even where connectivity is unstable."
      }
    },
    "preview": {
      "heading": "App preview",
      "sub": "Take a look at the main screens. Actual screens may change with updates.",
      "s1": "On-site checklist",
      "s2": "Visualization gallery",
      "s3": "Documents & approvals"
    },
    "requirements": {
      "heading": "Requirements",
      "os": "Android 8.0 or later",
      "space": "At least 100MB of free storage",
      "network": "Wi-Fi connection recommended for install"
    },
    "store": {
      "getOn": "Get it on",
      "android": "Android APK",
      "comingSoon": "Coming soon",
      "ios": "iOS (TestFlight)"
    }
  },
  "authPolicy": {
    "title": "Authentication Policy",
    "subtitle": "Configure password rules and login lockout policy.",
    "loadError": "Failed to load the authentication policy.",
    "saved": "Authentication policy saved.",
    "pwSection": "Password Policy",
    "pwMinLength": "Minimum length",
    "pwExpireDays": "Expiry period (days)",
    "pwRequireUpper": "Require uppercase",
    "pwRequireNumber": "Require number",
    "pwRequireSpecial": "Require special character",
    "lockSection": "Login Lockout",
    "loginMaxFail": "Max failed attempts",
    "lockMinutes": "Lockout duration (min)",
    "sessionTimeoutMin": "Session timeout (min)"
  },
  "company": {
    "title": "Company Management",
    "subtitle": "Manage exhibitor and partner company information.",
    "add": "Add company",
    "edit": "Edit company",
    "searchPh": "Search by company name or business number",
    "partnerType": "Type",
    "allTypes": "All types",
    "bizType": "Industry",
    "ceo": "CEO",
    "contact": "Contact person",
    "tel": "Phone",
    "telEditHint": "Enter digits only.",
    "telMaskNote": "The phone number is masked for security.",
    "address": "Address",
    "colName": "Company name",
    "colBizNo": "Business number",
    "colType": "Type",
    "colContact": "Contact",
    "colTel": "Phone",
    "colUse": "Active",
    "deleteConfirm": "Delete company {{name}}?",
    "deleted": "Company deleted.",
    "saved": "Company information saved.",
    "errRequired": "Please fill in the required fields.",
    "loadError": "Failed to load the company list.",
    "emptyTitle": "No companies registered",
    "emptyDesc": "Please add a new company."
  },
  "dept": {
    "title": "Department Management",
    "subtitle": "Manage the organizational department structure.",
    "addRoot": "Add top-level department",
    "addChild": "Add sub-department",
    "add": "Add department",
    "edit": "Edit department",
    "name": "Department name",
    "deleteConfirm": "Delete department {{name}}?",
    "deleted": "Department deleted.",
    "saved": "Department saved.",
    "errRequired": "Please enter a department name.",
    "loadError": "Failed to load the department list.",
    "emptyTitle": "No departments registered",
    "emptyDesc": "Please add a top-level department.",
    "searchPlaceholder": "Search departments",
    "searchNoResult": "No matching departments.",
    "treeAria": "Department organization tree",
    "expand": "Expand",
    "collapse": "Collapse",
    "expandAll": "Expand all",
    "collapseAll": "Collapse all",
    "selectHint": "Select a department from the tree.",
    "colId": "Department ID",
    "colParent": "Parent department",
    "topLevel": "Top level",
    "colChildCount": "Sub-departments",
    "childCountValue": "{{n}}",
    "errHasChildren": "Cannot delete a department that has sub-departments."
  },
  "errorLog": {
    "title": "Error Log",
    "subtitle": "View the system error history.",
    "filterAria": "Error log filter",
    "code": "Error code",
    "codePh": "Enter error code",
    "loadError": "Failed to load the error log.",
    "emptyTitle": "No error logs",
    "emptyDesc": "No error logs match the criteria.",
    "colTime": "Time",
    "colCode": "Code",
    "colMethod": "Method",
    "colPath": "Path",
    "colSummary": "Summary"
  },
  "loginHistory": {
    "title": "Login History",
    "subtitle": "View successful and failed login history.",
    "filterAria": "Login history filter",
    "result": "Result",
    "allResults": "All results",
    "userId": "User ID",
    "userIdPh": "Enter user ID",
    "loadError": "Failed to load the login history.",
    "emptyTitle": "No login history",
    "emptyDesc": "No login history matches the criteria.",
    "colTime": "Date/Time",
    "colResult": "Result",
    "colUser": "User",
    "colEmail": "Email",
    "colIp": "IP address",
    "colReason": "Reason"
  },
  "marketing": {
    "sentDone": "{{n}} messages sent.",
    "sentDisabled": "Already sent ({{n}})",
    "sendFail": "Failed to send.",
    "confirm": "Send the {{name}} campaign?",
    "sending": "Sending…",
    "sendBtn": "Send",
    "sendTestBtn": "Test send",
    "sendLiveBtn": "Live send",
    "confirmLive": "This will send the '{{name}}' campaign to {{audience}} real recipients. This cannot be undone. Continue?",
    "confirmLiveType": "Type LIVE to confirm the live send."
  },
  "program": {
    "title": "Program Management",
    "subtitle": "Manage screen programs and their access URLs.",
    "add": "Add program",
    "edit": "Edit program",
    "searchPh": "Search by program name",
    "deleteConfirm": "Delete program {{name}}?",
    "deleted": "Program deleted.",
    "saved": "Program saved.",
    "errRequired": "Please fill in the required fields.",
    "loadError": "Failed to load the program list.",
    "emptyTitle": "No programs registered",
    "emptyDesc": "Please add a new program.",
    "colName": "Program name",
    "colType": "Type",
    "colUrl": "URL",
    "colCategory": "Category",
    "colUse": "Active"
  },
  "roleMenu": {
    "title": "Role Menu Permissions",
    "subtitle": "Grant menu access permissions to roles.",
    "loadError": "Failed to load permission information.",
    "noRoles": "No roles registered.",
    "roleList": "Role list",
    "role": "Role",
    "matrix": "Permission matrix",
    "noMenus": "No menus.",
    "colMenu": "Menu",
    "colAccess": "Access",
    "colRead": "Read",
    "colWrite": "Write",
    "saved": "Permissions saved."
  },
  "sysHealth": {
    "title": "System Health",
    "subtitle": "Monitor server and service status.",
    "refresh": "Refresh",
    "loadError": "Failed to load system health.",
    "db": "Database",
    "redis": "Redis",
    "worker": "Worker",
    "queueDepth": "Queue depth {{n}}",
    "disk": "Disk",
    "diskFree": "{{mb}}MB free",
    "mem": "Memory",
    "uptime": "Uptime",
    "version": "Version"
  },
  "sysadmin": {
    "actions": "Actions",
    "cancel": "Cancel",
    "delete": "Delete",
    "edit": "Edit",
    "keyword": "Keyword",
    "next": "Next",
    "noUse": "Inactive",
    "prev": "Previous",
    "save": "Save",
    "saving": "Saving…",
    "search": "Search",
    "sortOrder": "Sort order",
    "totalN": "Total {{n}}",
    "use": "Active",
    "useYn": "Active"
  },
  "public": {
    "home": {
      "heroTitle": "The future of exhibitions, designed by AI"
    }
  },
  "calendar": {
    "prev": "Prev",
    "next": "Next",
    "today": "Today",
    "yearMonth": "{{y}}-{{m}}",
    "viewSwitch": "Switch view",
    "view": {
      "month": "Month",
      "week": "Week",
      "day": "Day"
    },
    "loading": "Loading…",
    "legend": "Legend",
    "dayEmpty": "No events.",
    "dayAll": "All events on {{date}}",
    "close": "Close"
  },
  "holiday": {
    "title": "Holidays",
    "subtitle": "View statutory/substitute holidays and manage temporary holidays. Shown in red on the calendar.",
    "year": "Year",
    "yearLabel": "{{y}}",
    "add": "Add Holiday",
    "created": "Holiday added.",
    "deleted": "Deleted.",
    "toggled": "Holiday status updated.",
    "loadError": "Failed to load holidays.",
    "emptyTitle": "No holidays",
    "emptyDesc": "No holidays registered for the selected year.",
    "listOf": "Holidays in {{y}}",
    "count": "{{n}} days off",
    "date": "Date",
    "weekday": "Day",
    "name": "Name",
    "type": "Type",
    "status": "Status",
    "manage": "Manage",
    "substitute": "Substitute",
    "legal": "Statutory",
    "on": "On",
    "off": "Off",
    "setOff": "Set working",
    "setOn": "Set day off",
    "delete": "Delete",
    "deleteConfirm": "Delete '{{name}}'?",
    "errRequired": "Enter date and name.",
    "errDup": "This date is already registered.",
    "substituteHint": "Register as substitute holiday",
    "cancel": "Cancel",
    "saving": "Saving…",
    "save": "Save"
  },
  "track": {
    "shell": {
      "wordmark": "KINTEX AI Exhibition & Event System",
      "tablistAria": "Select track",
      "tab": {
        "visitor": "Visitor",
        "business": "Business",
        "agency": "Agency"
      },
      "login": "Log in",
      "myHome": "My Home"
    },
    "gateway": {
      "heroAria": "Product hero",
      "aiWatermark": "AI-generated preview image",
      "eyebrow": "AI Exhibition & Event Platform",
      "title": "KINTEX AI Exhibition & Event System",
      "subtitle": "Automating the entire journey from planning to construction and visiting with AI.",
      "ctaPreReg": "Visitor Pre-registration",
      "ctaInquiry": "Exhibitor Inquiry",
      "tracksAria": "Track selection",
      "tracksTitle": "What brings you here?",
      "tracksSub": "Choose the track that fits your purpose.",
      "card": {
        "visitor": {
          "label": "Visitor",
          "title": "Visit an Event",
          "desc": "Schedules, pre-registration, and directions",
          "cta": "Visitor Track"
        },
        "business": {
          "label": "Organizer / Exhibitor",
          "title": "Host or Exhibit",
          "desc": "Rental, auto-quotes, booth applications, construction previews",
          "cta": "Business Track"
        },
        "agency": {
          "label": "Construction Partner",
          "title": "Join Construction",
          "desc": "Registered vendors, construction auctions, work reports",
          "cta": "Agency Track"
        }
      },
      "eventsAria": "Current and upcoming exhibitions",
      "eventsTitle": "Current & Upcoming Exhibitions",
      "eventsSub": "Explore ongoing and upcoming exhibitions.",
      "eventsMore": "View all schedules"
    },
    "visitor": {
      "heroAria": "Visitor hero",
      "eyebrow": "Visitor Guide",
      "title": "Start Your Visit Here",
      "subtitle": "Pre-register for faster entry and get alerts for topics you care about.",
      "ctaPreReg": "Pre-register",
      "ctaTicket": "Buy Tickets",
      "eventsAria": "Event schedule",
      "eventsTitle": "Event Schedule",
      "eventsSub": "Check current and upcoming exhibitions and pre-register.",
      "guideAria": "Visit guide",
      "guideTitle": "Visit Guide",
      "guideSub": "Transport, parking, amenities, and accessibility in one place.",
      "guide": {
        "transport": {
          "title": "Transport",
          "desc": "3 min walk from GTX-A KINTEX Stn · intercity buses",
          "link": "Directions"
        },
        "parking": {
          "title": "Parking",
          "desc": "Real-time availability, rates, and gates",
          "link": "Parking info"
        },
        "wayfinding": {
          "title": "Indoor Wayfinding",
          "desc": "Indoor routes to halls and booths",
          "link": "Open wayfinding"
        },
        "amenities": {
          "title": "Amenities",
          "desc": "Dining, nursing room, storage, ATM",
          "link": "View amenities"
        },
        "accessibility": {
          "title": "Accessibility",
          "desc": "Wheelchair access, sign-language guidance",
          "link": "Accessibility info"
        },
        "inquiry": {
          "title": "Support",
          "desc": "FAQ and contact info",
          "link": "Contact us"
        }
      },
      "noticeAria": "Notices",
      "noticeTitle": "Notices",
      "noticeSub": "Check the latest notices and alerts.",
      "noticeEmpty": "No notices yet.",
      "aiWatermark": "AI-generated preview image",
      "hero": {
        "title": "Ask anything — AI guides your visit",
        "subtitle": "Schedules, directions, tickets and booth locations — all in one chat"
      },
      "aiTiles": {
        "title": "How our AI helps",
        "sub": "AI supports every moment of your visit.",
        "soon": "Coming soon",
        "assistant": {
          "title": "AI Visit Assistant",
          "desc": "Ask anything"
        },
        "recommend": {
          "title": "AI Recommendations",
          "desc": "Curated to your interests"
        },
        "wayfinding": {
          "title": "AI Wayfinding",
          "desc": "Best indoor route"
        },
        "schedule": {
          "title": "AI Itinerary",
          "desc": "Your own visit course"
        },
        "crowd": {
          "title": "AI Crowd & Wait",
          "desc": "Best low-crowd times"
        },
        "render": {
          "title": "AI Booth Preview",
          "desc": "Booth preview (Business track)"
        }
      },
      "showcaseTitle": "Ongoing & upcoming",
      "showcaseSub": "See what's on now and coming up.",
      "recommendTitle": "Exhibitions for your interests",
      "recommendSub": "Pick your interests and AI curates for you.",
      "recommendTag": "AI picks",
      "interests": {
        "robot": "Robotics",
        "smartfactory": "Smart factory",
        "healthcare": "Healthcare",
        "eco": "Eco & energy",
        "mobility": "Mobility",
        "content": "Content & culture"
      },
      "guideMore": "Learn more",
      "journeyTitle": "How your visit works",
      "journeySub": "From pre-registration to check-in in three simple steps.",
      "journey": {
        "register": {
          "title": "Pre-register",
          "desc": "Register your visit online.",
          "link": "Browse exhibitions"
        },
        "badge": {
          "title": "Badge & QR",
          "desc": "Get your mobile badge and entry QR.",
          "link": "Find my ticket"
        },
        "checkin": {
          "title": "On-site check-in",
          "desc": "Scan your QR at the gate and walk in.",
          "link": "Sign in"
        }
      },
      "venueTitle": "About KINTEX",
      "venueSub": "Korea's largest exhibition & convention center.",
      "venue": {
        "halls": {
          "label": "Exhibition halls",
          "value": "10"
        },
        "area": {
          "label": "Exhibition area",
          "value": "108,556㎡"
        },
        "parking": {
          "label": "Parking",
          "value": "7,500"
        },
        "access": {
          "label": "Access",
          "value": "GTX-A 3-min walk"
        }
      },
      "briefing": {
        "title": "AI Exhibition Briefing",
        "sub": "AI curates this year's and this month's upcoming exhibitions for you.",
        "viewYear": "Yearly ({{year}})",
        "viewMonth": "Monthly",
        "aiSummary": "AI summary",
        "loading": "Generating AI summary…",
        "empty": "No exhibitions scheduled for this period.",
        "yearSummary": "{{count}} exhibitions & events are planned in {{year}}, concentrated around {{peak}}.",
        "monthSummary": "{{count}} exhibitions this month · weekend visits recommended.",
        "monthLabel": "month {{month}}",
        "eventsCount": "{{count}} events",
        "prevMonth": "Previous month",
        "nextMonth": "Next month"
      },
      "stats": {
        "aria": "KINTEX at a glance",
        "exhibitions": {
          "label": "Total exhibitions",
          "countTo": "1200",
          "suffix": "+"
        },
        "exhibitors": {
          "label": "Exhibitors",
          "countTo": "30000",
          "suffix": "+"
        },
        "visitors": {
          "label": "Annual visitors",
          "countTo": "5",
          "suffix": "M+"
        }
      }
    },
    "business": {
      "heroAria": "Business hero",
      "eyebrow": "For Organizers & Exhibitors",
      "title": "Host or Exhibit — All Applications Online",
      "subtitle": "Handle everything online — from rental to booth application and construction.",
      "ctaApply": "Apply / Inquire",
      "ctaLogin": "Log in",
      "ctaInquiry": "Inquire",
      "valueAria": "Value propositions",
      "valueTitle": "Choose Your Role",
      "valueSub": "Features for organizers and exhibitors.",
      "value": {
        "organizer": {
          "title": "Organizer · Hall Rental",
          "desc": "From rental to hall assignment and floor plans in one place.",
          "item": {
            "rental": "Rental process",
            "quote": "Auto quotation",
            "floorplan": "Hall assignment & floor plan",
            "rate": "Rates & facility specs"
          },
          "cta": "Rental inquiry · Log in"
        },
        "exhibitor": {
          "title": "Exhibitor · Booth Application",
          "desc": "From booth and utility applications to AI construction previews.",
          "item": {
            "apply": "Booth application",
            "utility": "Utility application",
            "compliance": "Compliance pre-check",
            "render": "AI construction preview"
          },
          "cta": "Apply · Log in"
        }
      },
      "processAria": "Rental process",
      "processTitle": "Rental Process",
      "processSub": "From inquiry to construction and inspection at a glance.",
      "process": {
        "inquiry": {
          "title": "Inquiry",
          "desc": "Rental consultation"
        },
        "quote": {
          "title": "Estimate",
          "desc": "Automated estimate"
        },
        "contract": {
          "title": "Contract",
          "desc": "Sign the contract"
        },
        "assign": {
          "title": "Hall Assignment",
          "desc": "Hall and zone assignment"
        },
        "booth": {
          "title": "Booth Application",
          "desc": "Exhibitor booths and utilities"
        },
        "inspect": {
          "title": "Construction & Inspection",
          "desc": "On-site inspection after construction"
        }
      },
      "rateAria": "Rates and documents",
      "rateTitle": "Rates & Documents",
      "rateSub": "Rates by booth type and key documents.",
      "rate": {
        "shell": {
          "label": "Shell Scheme",
          "price": "Standard",
          "desc": "Basic booth with basic power included"
        },
        "space": {
          "label": "Space Only",
          "price": "Space",
          "desc": "Custom build, structural calc required"
        },
        "premium": {
          "label": "Premium",
          "price": "Premium",
          "desc": "Premium location with extra utilities"
        }
      },
      "doc": {
        "assign": {
          "title": "Assignment Application",
          "desc": "Hall assignment application form"
        },
        "flame": {
          "title": "Flame-retardant Certificate",
          "desc": "Flame-retardant treatment certificate"
        },
        "structure": {
          "title": "Structural Calculation",
          "desc": "Structural review for space-only booths and rigging"
        }
      },
      "ctaBandAria": "Log in or inquire",
      "ctaBandText": "Already have an account?"
    },
    "agency": {
      "heroAria": "Agency hero",
      "eyebrow": "For Construction & Booth Partners",
      "title": "Join Exhibition Construction as a KINTEX Registered Vendor",
      "subtitle": "Win projects transparently through construction auctions (reverse auction) — a KINTEX-exclusive approach.",
      "ctaLogin": "Vendor Log in",
      "ctaRegister": "Apply to Register",
      "ctaAuctionLogin": "Log in to bid on auctions",
      "ctaWorkReport": "Submit Work Report",
      "registryAria": "Registered vendor info",
      "registryTitle": "Registered Vendors",
      "registrySub": "Operated with 739 registered vendors across 14 categories.",
      "gateTitle": "Unregistered vendors cannot participate in construction (self-construction prohibited)",
      "gateBody": "Exhibition construction must go through KINTEX-registered vendors. Review the registration process and apply.",
      "reg": {
        "apply": {
          "title": "Apply",
          "desc": "Submit registration form"
        },
        "review": {
          "title": "Review",
          "desc": "Qualification and track-record review"
        },
        "register": {
          "title": "Register",
          "desc": "Listed as an official vendor"
        },
        "eligible": {
          "title": "Eligibility",
          "desc": "Bid on auctions and win projects"
        }
      },
      "auctionAria": "Construction auctions",
      "auctionTitle": "Ongoing Construction Auctions (Reverse Auction)",
      "auctionSub": "Compete transparently within the budget range.",
      "auctionEmptyTitle": "Auction listings are available after logging in",
      "auctionEmptyBody": "After logging in as a registered vendor, view ongoing auction listings, budgets, deadlines, and bid status.",
      "safetyAria": "Work reports and safety rules",
      "safetyTitle": "Work Reports & Safety Rules",
      "safetySub": "Review required procedures and rules before on-site work.",
      "safety": {
        "report": {
          "title": "Work Report Procedure",
          "desc": "Online work report before on-site work"
        },
        "prohibited": {
          "title": "Prohibited Works & Noise",
          "desc": "Prohibited works, noise limits, rigging structural calc"
        },
        "docs": {
          "title": "Required Documents",
          "desc": "Flame-retardant certificate, insurance"
        }
      },
      "ctaBandAria": "Vendor log in",
      "ctaBandText": "Already a registered vendor?"
    }
  },
  "_note": "SCR-T1 visitor v2.3.2 신규 i18n 키 (append-only). frontend가 단독 편집자로 4개 로케일 병합. 병렬 편집 금지.",
  "keys": {
    "ko": "AI 도우미",
    "en": "AI Guide",
    "zh": "AI 助手",
    "ja": "AI ガイド"
  },
  "customizer": {
    "title": "Appearance",
    "lead": "Personalize theme, layout and accent color. Saved on this device.",
    "reset": "Restore defaults",
    "theme": {
      "title": "Theme",
      "light": "Light",
      "dark": "Dark",
      "system": "System"
    },
    "layout": {
      "title": "Layout",
      "sidebar": "Sidebar",
      "sidebarExpanded": "Expanded — menu shown",
      "sidebarCollapsed": "Collapsed — full-width content"
    },
    "density": {
      "title": "Density",
      "comfortable": "Comfortable",
      "compact": "Compact"
    },
    "accent": {
      "title": "Accent color",
      "default": "Brand blue",
      "indigo": "Indigo",
      "teal": "Teal",
      "violet": "Violet",
      "rose": "Rose",
      "amber": "Amber"
    }
  },
  "exhibitorsPage": {
    "title": "Exhibitor Management",
    "subtitle": "Exhibitor roster, booth assignment, design/settlement status, and contacts",
    "noEventTitle": "No event selected",
    "noEventDesc": "Please select an event from your workspace first.",
    "kpisAria": "Exhibitor summary metrics",
    "kpiTotal": "Exhibitors",
    "kpiContracted": "Contracted",
    "kpiDesignApproved": "Design Approved",
    "kpiOutstanding": "Outstanding",
    "listTitle": "Exhibitor list",
    "searchPlaceholder": "Search company or booth no.",
    "saleFilterLabel": "Booth assignment filter",
    "filterAll": "All",
    "loadError": "Failed to load the exhibitor list.",
    "emptyTitle": "No exhibitors to show",
    "emptyDesc": "Adjust your search or filter, or assign booths first.",
    "colCompany": "Company",
    "colBooth": "Booth",
    "colType": "Type",
    "colArea": "Area (m²)",
    "colSale": "Assignment",
    "colDesign": "Design",
    "colSettlement": "Settlement",
    "colContact": "Contact",
    "dueShort": "Due ₩{{won}}",
    "contactNone": "Not registered",
    "count": "{{n}} exhibitors",
    "detailTitle": "Exhibitor detail",
    "statusSection": "Status",
    "contactSection": "Contact",
    "boothLabel": "Booth no.",
    "typeLabel": "Booth type",
    "areaLabel": "Area",
    "saleLabel": "Assignment",
    "designLabel": "Design status",
    "settlementLabel": "Settlement status",
    "outstandingLabel": "Outstanding",
    "contactNameLabel": "Contact name",
    "contactPhoneLabel": "Phone",
    "won": "₩{{won}}",
    "sale": {
      "sold": "Sold",
      "held": "Held",
      "available": "Available",
      "none": "N/A"
    },
    "design": {
      "approved": "Approved",
      "review": "In review",
      "draft": "Draft",
      "rejected": "Rejected",
      "none": "N/A"
    },
    "invoice": {
      "pending": "Pending",
      "invoiced": "Invoiced",
      "paid": "Paid",
      "overdue": "Overdue",
      "cancelled": "Cancelled",
      "none": "No invoice"
    },
    "boothType": {
      "assembled": "Assembled",
      "independent": "Independent",
      "corner": "Corner",
      "island": "Island"
    }
  },
  "datatable": {
    "search": "Search",
    "searchAria": "Search table",
    "csv": "Export CSV",
    "prev": "Prev",
    "next": "Next",
    "pageSize": "Rows",
    "pageInfo": "{{page}} / {{total}}",
    "count": "Showing {{shown}} · {{total}} total",
    "emptyTitle": "No data to display",
    "emptyFiltered": "No results match your search",
    "sortAsc": "Sort ascending",
    "sortDesc": "Sort descending",
    "sortClear": "Clear sort"
  },
  "breadcrumb": {
    "aria": "Breadcrumb",
    "docsAuthoring": "Report Authoring",
    "micrositeBuilder": "Microsite Builder",
    "i18nCms": "Multilingual CMS",
    "notifications": "Notifications",
    "me": "My Page",
    "auctionDetail": "Auction Detail",
    "auctionAward": "Award Comparison",
    "exhibitorHome": "Exhibitor Home",
    "comparison": "AI Layout Comparison",
    "design": "Booth Design Studio",
    "utility": "Utility Wiring",
    "utilityOrder": "Utility Order",
    "compliance": "Compliance Check",
    "approvals": "Approval Queue",
    "reviewDetail": "Review Detail",
    "gallery": "Visualization Gallery"
  },
  "notFound": {
    "title": "Page not found",
    "desc": "The page you requested does not exist or has moved. Please check the address.",
    "home": "Go home",
    "back": "Go back"
  },
  "msg": {
    "title": "Message Templates",
    "subtitle": "Manage notification, email and notice texts as code/locale templates with {key} placeholders",
    "add": "Add template",
    "category": "Category",
    "allCategories": "All categories",
    "locale": "Locale",
    "allLocales": "All locales",
    "search": "Search",
    "searchPlaceholder": "Search code, title, template",
    "filterAria": "Message filters",
    "loadError": "Failed to load messages",
    "emptyTitle": "No messages",
    "emptyDesc": "No templates match the filters. Try adding one.",
    "code": "Code",
    "msgTitle": "Title",
    "placeholders": "Placeholders",
    "use": "Use",
    "manage": "Manage",
    "used": "In use",
    "unused": "Unused",
    "preview": "Preview",
    "edit": "Edit",
    "delete": "Delete",
    "deleteConfirm": "Delete template {{code}} ({{locale}})?",
    "saved": "Saved",
    "deleted": "Deleted",
    "errRequired": "Code, title and template are required",
    "useYn": "Use Y/N",
    "template": "Template",
    "templatePlaceholder": "Use {key} placeholders, e.g. {name}, {eventName}",
    "detectedParams": "Detected parameters",
    "cancel": "Cancel",
    "save": "Save",
    "saving": "Saving…",
    "close": "Close",
    "render": "Render",
    "rendering": "Rendering…",
    "renderResult": "Result",
    "noParams": "This template has no parameters"
  }
}