Bunch of minor fixes

This commit is contained in:
2026-05-09 17:56:33 +03:00
parent c08a665503
commit 3c025639aa
12 changed files with 183 additions and 118 deletions

View File

@@ -30,7 +30,7 @@ export default async function Page({
return (
<div className="bg-[#0E0F19] min-h-screen pt-16 md:pt-20">
<div className="max-w-480 mx-auto px-6 md:px-12 py-8 md:py-16">
<div className="max-w-480 mx-auto px-8 md:px-16 py-10 md:py-20">
<div className="grid grid-cols-1 lg:grid-cols-[1fr_300px] gap-8 lg:gap-16">
{/* Main content */}
<div>
@@ -41,50 +41,56 @@ export default async function Page({
{t("rules.houseRules")}
</h1>
<ReactMarkdown
components={
{
h1: (props) => {
const id =
sections[headingCount]?.id || `section-${headingCount}`;
headingCount++;
return (
<h1
id={id}
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-white uppercase mb-4 mt-12 first:mt-0 scroll-mt-24 md:scroll-mt-28`}
<div className="rules-markdown">
<ReactMarkdown
components={
{
h1: (props) => {
const id =
sections[headingCount]?.id || `section-${headingCount}`;
headingCount++;
return (
<h1
id={id}
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-white uppercase mb-4 mt-12 first:mt-0 scroll-mt-24 md:scroll-mt-28`}
>
{props.children}
</h1>
);
},
h2: (props) => (
<h2
className={`${vipnagorgialla.className} font-bold italic text-xl text-white uppercase mb-2 mt-6`}
>
{props.children}
</h1>
);
},
h2: (props) => (
<h2
className={`${vipnagorgialla.className} font-bold italic text-xl text-white uppercase mb-2 mt-6`}
>
{props.children}
</h2>
),
ol: (props) => (
<ol className="list-decimal list-inside text-white mb-4">
{props.children}
</ol>
),
ul: (props) => (
<ul className="list-disc list-inside text-white mb-4">
{props.children}
</ul>
),
p: (props) => (
<p className="text-white mb-4">{props.children}</p>
),
li: (props) => (
<li className="text-white mb-2">{props.children}</li>
),
} as Components
}
>
{content}
</ReactMarkdown>
</h2>
),
ol: (props) => (
<ol className="text-white mb-4 leading-[19px]">
{props.children}
</ol>
),
ul: (props) => (
<ul className="list-disc list-inside text-white mb-4 leading-[19px]">
{props.children}
</ul>
),
p: (props) => (
<p className="text-white mb-4 leading-[19px]">
{props.children}
</p>
),
li: (props) => (
<li className="text-white mb-2 leading-[19px]">
{props.children}
</li>
),
} as Components
}
>
{content}
</ReactMarkdown>
</div>
</div>
{/* Sidebar navigation */}

View File

@@ -79,7 +79,7 @@ function TicketCard({
</ul>
<Link href={buttonHref} target="_blank">
<button
className={`px-4 py-2 bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] cursor-pointer ${vipnagorgialla.className} font-bold italic uppercase transition`}
className={`px-4 py-2 border-4 border-transparent bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] cursor-pointer ${vipnagorgialla.className} font-bold italic leading-none uppercase transition`}
>
{buttonText}
</button>

View File

@@ -30,7 +30,7 @@ export default async function CS2Tournament({
return (
<div className="bg-[#0E0F19] min-h-screen pt-16 md:pt-20">
<div className="max-w-480 mx-auto px-6 md:px-12 py-8 md:py-16">
<div className="max-w-480 mx-auto px-8 md:px-16 py-10 md:py-20">
<div className="grid grid-cols-1 lg:grid-cols-[1fr_300px] gap-8 lg:gap-16">
{/* Main content */}
<div>
@@ -46,14 +46,14 @@ export default async function CS2Tournament({
<Link
href="https://fienta.com/et/tipilan"
target="_blank"
className={`${vipnagorgialla.className} font-bold italic px-4 py-3 bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] uppercase transition`}
className={`${vipnagorgialla.className} font-bold italic leading-none text-lg px-4 py-3 border-4 border-transparent bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] uppercase transition`}
>
{t("cs2page.buyTicket")}
</Link>
<Link
href="https://git.edunaut.ee/slunk/TipiLAN_reeglistik_ruleset/src/branch/main/CS2%20tournament"
target="_blank"
className={`${vipnagorgialla.className} font-bold italic text-lg uppercase px-4 py-2 border-2 border-[#00A3E0] bg-[#1F5673] text-[#EEE5E5] hover:bg-[#00A3E0] hover:text-black transition`}
className={`${vipnagorgialla.className} font-bold italic leading-none text-lg uppercase px-4 py-3 border-4 border-[#00A3E0] bg-[#1F5673] text-[#EEE5E5] hover:bg-[#00A3E0] hover:text-black transition`}
>
{t("cs2page.viewGithub")}
</Link>
@@ -66,7 +66,7 @@ export default async function CS2Tournament({
>
{t("cs2page.intro.title")}
</h2>
<p className="text-white mb-6">
<p className="text-white mb-6 leading-[19px]">
{t("cs2page.intro.description")}
</p>
@@ -75,8 +75,8 @@ export default async function CS2Tournament({
>
{t("cs2page.intro.previousWinners")}
</h3>
<p className="text-white font-bold">2025</p>
<ol className="text-white list-decimal list-inside mb-4">
<p className="text-white font-bold leading-[19px]">2025</p>
<ol className="text-white list-decimal list-inside mb-4 leading-[19px]">
<li>RAID (Eesti)</li>
<li>hypewrld (Läti)</li>
<li>CSDIILIT (Soome/Eesti)</li>
@@ -90,7 +90,9 @@ export default async function CS2Tournament({
>
{t("cs2page.info.title")}
</h2>
<p className="text-white">{t("cs2page.info.description")}</p>
<p className="text-white leading-[19px]">
{t("cs2page.info.description")}
</p>
</section>
{/* AUHINNAFOND */}
@@ -106,7 +108,7 @@ export default async function CS2Tournament({
>
{t("cs2page.prizes.mainTitle")}
</h3>
<ul className="text-white mb-2">
<ul className="text-white mb-2 leading-[19px]">
<li>
1. koht - 3000, 600 inimese kohta, 50% ehk 1/2
auhinnafondist.
@@ -120,7 +122,7 @@ export default async function CS2Tournament({
auhinnafondist.
</li>
</ul>
<p className="text-white/80 text-sm mb-6">
<p className="text-white/80 text-sm mb-6 leading-[19px]">
{t("cs2page.prizes.mainNote")}
</p>
@@ -129,7 +131,7 @@ export default async function CS2Tournament({
>
{t("cs2page.prizes.secondTitle")}
</h3>
<ul className="text-white mb-2">
<ul className="text-white mb-2 leading-[19px]">
<li>
1. koht - 500, 100 inimese kohta, 66.6...(6)% ehk 2/3
auhinnafondist.
@@ -139,7 +141,7 @@ export default async function CS2Tournament({
auhinnafondist.
</li>
</ul>
<p className="text-white/80 text-sm">
<p className="text-white/80 text-sm leading-[19px]">
{t("cs2page.prizes.secondNote")}
</p>
</section>
@@ -151,11 +153,15 @@ export default async function CS2Tournament({
>
{t("cs2page.format.title")}
</h2>
<p className="text-white mb-4">
<p className="text-white mb-4 leading-[19px]">
{t("cs2page.format.description")}
</p>
<p className="text-white">{t("cs2page.format.day1")}</p>
<p className="text-white">{t("cs2page.format.day23")}</p>
<p className="text-white leading-[19px]">
{t("cs2page.format.day1")}
</p>
<p className="text-white leading-[19px]">
{t("cs2page.format.day23")}
</p>
</section>
{/* VRS INFO */}
@@ -165,8 +171,12 @@ export default async function CS2Tournament({
>
{t("cs2page.vrs.title")}
</h2>
<p className="text-white mb-4">{t("cs2page.vrs.description1")}</p>
<p className="text-white">{t("cs2page.vrs.description2")}</p>
<p className="text-white mb-4 leading-[19px]">
{t("cs2page.vrs.description1")}
</p>
<p className="text-white leading-[19px]">
{t("cs2page.vrs.description2")}
</p>
</section>
{/* FAQ - commented out until content is ready
@@ -194,19 +204,23 @@ export default async function CS2Tournament({
>
{t("cs2page.rules.title")}
</h2>
<p className="text-white mb-6">
<p className="text-white mb-6 leading-[19px]">
{t("cs2page.rules.description")}
</p>
<RulesContent sections={t.raw("cs2page.rules.sections")} />
<div className="mt-8">
<p className="text-white mb-2">{t("cs2page.rules.contact")}</p>
<p className="text-white mb-2 leading-[19px]">
{t("cs2page.rules.contact")}
</p>
<p className="text-[#00A3E0] font-bold">
{t("cs2page.rules.contactName")}
</p>
<p className="text-white">{t("cs2page.rules.contactRole")}</p>
<p className="text-white">
<p className="text-white leading-[19px]">
{t("cs2page.rules.contactRole")}
</p>
<p className="text-white leading-[19px]">
Discord:{" "}
<a
href="https://discord.com/users/292372329747710013"

View File

@@ -29,7 +29,7 @@ export default async function LoLTournament({
return (
<div className="bg-[#0E0F19] min-h-screen pt-16 md:pt-20">
<div className="max-w-480 mx-auto px-6 md:px-12 py-8 md:py-16">
<div className="max-w-480 mx-auto px-8 md:px-16 py-10 md:py-20">
<div className="grid grid-cols-1 lg:grid-cols-[1fr_300px] gap-8 lg:gap-16">
{/* Main content */}
<div>
@@ -45,7 +45,7 @@ export default async function LoLTournament({
<Link
href="https://fienta.com/et/tipilan"
target="_blank"
className={`${vipnagorgialla.className} font-bold italic px-4 py-2 bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] uppercase transition`}
className={`${vipnagorgialla.className} font-bold italic leading-none text-lg px-4 py-3 border-4 border-transparent bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] uppercase transition`}
>
{t("lolpage.buyTicket")}
</Link>
@@ -58,7 +58,7 @@ export default async function LoLTournament({
>
{t("lolpage.intro.title")}
</h2>
<p className="text-white mb-6">
<p className="text-white mb-6 leading-[19px]">
{t("lolpage.intro.description")}
</p>
@@ -67,8 +67,8 @@ export default async function LoLTournament({
>
{t("lolpage.intro.previousWinners")}
</h3>
<p className="text-white font-bold">2025</p>
<ol className="text-white list-decimal list-inside mb-4">
<p className="text-white font-bold leading-[19px]">2025</p>
<ol className="text-white list-decimal list-inside mb-4 leading-[19px]">
<li>Ükssilm (Eesti)</li>
<li>Eesti Rästikud (Eesti)</li>
<li>LOMiks (Läti)</li>
@@ -82,7 +82,9 @@ export default async function LoLTournament({
>
{t("lolpage.info.title")}
</h2>
<p className="text-white">{t("lolpage.info.description")}</p>
<p className="text-white leading-[19px]">
{t("lolpage.info.description")}
</p>
</section>
{/* AUHINNAFOND */}
@@ -98,12 +100,12 @@ export default async function LoLTournament({
>
{t("lolpage.prizes.mainTitle")}
</h3>
<ul className="text-white mb-2">
<ul className="text-white mb-2 leading-[19px]">
<li>{t("lolpage.prizes.place1")}</li>
<li>{t("lolpage.prizes.place2")}</li>
<li>{t("lolpage.prizes.place3")}</li>
</ul>
<p className="text-white/80 text-sm">
<p className="text-white/80 text-sm leading-[19px]">
{t("lolpage.prizes.note")}
</p>
</section>
@@ -115,11 +117,15 @@ export default async function LoLTournament({
>
{t("lolpage.format.title")}
</h2>
<p className="text-white mb-4">
<p className="text-white mb-4 leading-[19px]">
{t("lolpage.format.description")}
</p>
<p className="text-white">{t("lolpage.format.day1")}</p>
<p className="text-white">{t("lolpage.format.day2")}</p>
<p className="text-white leading-[19px]">
{t("lolpage.format.day1")}
</p>
<p className="text-white leading-[19px]">
{t("lolpage.format.day2")}
</p>
</section>
{/* FAQ - commented out until content is ready
@@ -147,19 +153,23 @@ export default async function LoLTournament({
>
{t("lolpage.rules.title")}
</h2>
<p className="text-white mb-6">
<p className="text-white mb-6 leading-[19px]">
{t("lolpage.rules.description")}
</p>
<RulesContent sections={t.raw("lolpage.rules.sections")} />
<div className="mt-8">
<p className="text-white mb-2">{t("lolpage.rules.contact")}</p>
<p className="text-white mb-2 leading-[19px]">
{t("lolpage.rules.contact")}
</p>
<p className="text-[#00A3E0] font-bold">
{t("lolpage.rules.contactName")}
</p>
<p className="text-white">{t("lolpage.rules.contactRole")}</p>
<p className="text-white">
<p className="text-white leading-[19px]">
{t("lolpage.rules.contactRole")}
</p>
<p className="text-white leading-[19px]">
Discord:{" "}
<a
href="https://discord.com/users/125585160761638912"

View File

@@ -132,6 +132,35 @@ body {
}
}
.rules-markdown ol {
counter-reset: list-item;
list-style: none;
margin-left: 0;
padding-left: 0;
}
.rules-markdown ol > li {
counter-increment: list-item;
position: relative;
padding-left: 2.5rem;
font-variant-numeric: tabular-nums;
}
.rules-markdown ol > li::before {
content: counters(list-item, ".") ".";
position: absolute;
left: 0;
width: 2rem;
text-align: right;
color: #ffffff;
}
.rules-markdown ol ol {
counter-reset: list-item;
margin-top: 0.5rem;
margin-left: 1rem;
}
.material-symbols-outlined {
font-variation-settings:
"FILL" 1,

View File

@@ -40,8 +40,11 @@ const Header = ({ navItems }: HeaderProps) => {
const pathname = usePathname();
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
// Header navigation should include all options except homepage
const mainNavItems = navItems.filter((item) => item.href !== "/");
// Header navigation should include all options except homepage and hidden items
const hiddenNavHrefs: NavItem["href"][] = ["/messiala", "/ajakava"];
const mainNavItems = navItems.filter(
(item) => item.href !== "/" && !hiddenNavHrefs.includes(item.href),
);
const dropdownNavItems = mainNavItems;
const navIconByHref: Partial<Record<NavItem["href"], string>> = {
@@ -86,16 +89,16 @@ const Header = ({ navItems }: HeaderProps) => {
<Image
src="/tipilan-icon-white.svg"
alt="TipiLAN"
width={49}
width={40}
height={40}
className="h-10 w-auto"
className="h-auto w-10"
/>
</Link>
{/* Right side - Navigation + controls */}
<div className="flex items-center gap-12">
{/* Desktop Navigation */}
<nav className="hidden xl:flex items-center gap-12">
<nav className="hidden xl:flex items-center gap-8">
{mainNavItems.map((item) => {
const isActive = pathname === item.href;
@@ -106,7 +109,7 @@ const Header = ({ navItems }: HeaderProps) => {
aria-current={isActive ? "page" : undefined}
aria-disabled={isActive ? true : undefined}
tabIndex={isActive ? -1 : undefined}
className={`${vipnagorgialla.className} group font-bold italic text-lg uppercase px-4 py-1.5 border-2 border-[#00A3E0] transition ${
className={`${vipnagorgialla.className} group font-bold italic leading-none text-lg uppercase px-4 py-1.5 border-4 border-[#00A3E0] transition ${
isActive
? "bg-[#00A3E0] text-black cursor-default pointer-events-none"
: "bg-[#1F5673] text-[#EEE5E5] hover:bg-[#00A3E0] hover:text-black"
@@ -155,7 +158,7 @@ const Header = ({ navItems }: HeaderProps) => {
>
{isActive ? (
<span
className={`${vipnagorgialla.className} block w-full cursor-default bg-[#00A3E0] px-5 py-2.5 text-xl font-bold italic uppercase text-black ${
className={`${vipnagorgialla.className} block w-full cursor-default bg-[#00A3E0] px-5 py-2.5 text-xl font-bold italic leading-none uppercase text-black ${
hasBottomBorder ? "border-b-3 border-[#1F5673]" : ""
}`}
>
@@ -181,7 +184,7 @@ const Header = ({ navItems }: HeaderProps) => {
) : (
<Link
href={item.href}
className={`${vipnagorgialla.className} group block w-full bg-[#0E0F19] px-5 py-2.5 text-xl font-bold italic uppercase text-[#EEE5E5] transition hover:bg-[#00A3E0] hover:text-black ${
className={`${vipnagorgialla.className} group block w-full bg-[#0E0F19] px-5 py-2.5 text-xl font-bold italic leading-none uppercase text-[#EEE5E5] transition hover:bg-[#00A3E0] hover:text-black ${
hasBottomBorder ? "border-b-3 border-[#1F5673]" : ""
}`}
>

View File

@@ -35,7 +35,7 @@ export default function HeroSection() {
</div>
<Link
href="/piletid"
className={`self-center md:self-start px-6 py-3 bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] ${vipnagorgialla.className} font-bold italic text-[clamp(1rem,0.8rem+0.8vw,1.5rem)] uppercase transition`}
className={`self-center md:self-start px-6 py-3 border-4 border-transparent bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] ${vipnagorgialla.className} font-bold italic leading-none text-[clamp(1rem,0.8rem+0.8vw,1.5rem)] uppercase transition`}
>
{t("hero.buyTicket")}
</Link>

View File

@@ -25,7 +25,7 @@ function RuleItem({
}) {
if (typeof rule === "string") {
return (
<li className="text-white mb-2">
<li className="text-white mb-2 leading-[19px]">
<span className="text-white mr-2">{index}.</span>
{rule}
</li>
@@ -33,7 +33,7 @@ function RuleItem({
}
return (
<li className="text-white mb-3">
<li className="text-white mb-3 leading-[19px]">
<span className="text-white mr-2">{index}.</span>
{rule.main}
{rule.sub && rule.sub.length > 0 && (
@@ -41,7 +41,7 @@ function RuleItem({
{rule.sub.map((subRule, subIndex) => {
if (typeof subRule === "string") {
return (
<li key={subIndex} className="text-white mb-1">
<li key={subIndex} className="text-white mb-1 leading-[19px]">
<span className="text-white mr-2">
{index}.{subIndex + 1}.
</span>
@@ -50,7 +50,7 @@ function RuleItem({
);
}
return (
<li key={subIndex} className="text-white mb-2">
<li key={subIndex} className="text-white mb-2 leading-[19px]">
<span className="text-white mr-2">
{index}.{subIndex + 1}.
</span>
@@ -58,7 +58,10 @@ function RuleItem({
{subRule.sub && subRule.sub.length > 0 && (
<ol className="ml-6 mt-1">
{subRule.sub.map((subSubRule, subSubIndex) => (
<li key={subSubIndex} className="text-white/80 mb-1">
<li
key={subSubIndex}
className="text-white/80 mb-1 leading-[19px]"
>
<span className="text-white/80 mr-2">
{index}.{subIndex + 1}.{subSubIndex + 1}.
</span>

View File

@@ -94,7 +94,7 @@ export default function TeaserCarousel() {
return (
<div className="border-b-3 border-[#1F5673]">
{/* Slides (fade transition + hero lift effect) */}
<div className="relative h-135 sm:h-140 md:h-160 lg:h-175 xl:h-155 2xl:h-165 overflow-hidden">
<div className="relative h-135 sm:h-140 md:h-160 lg:h-[720px] xl:h-[780px] 2xl:h-[820px] overflow-hidden">
{slides.map((slide, i) => {
const title = t(`${slide.key}.title`);
const description = t(`${slide.key}.description`);
@@ -172,7 +172,7 @@ export default function TeaserCarousel() {
})}
{/* Floating heading (mobile) */}
<div className="absolute top-5 inset-x-0 px-8 z-20 md:hidden pointer-events-none">
<div className="absolute top-8 inset-x-0 px-8 z-20 md:hidden pointer-events-none">
<h2
className={`${vipnagorgialla.className} font-bold italic text-[clamp(2rem,1.5rem+4.6vw,3rem)] leading-[0.95] tracking-normal uppercase text-[#EEE5E5] whitespace-normal wrap-break-word text-left max-w-[12ch]`}
>
@@ -181,7 +181,7 @@ export default function TeaserCarousel() {
</div>
{/* Floating heading (desktop/tablet) */}
<div className="absolute top-8 inset-x-0 px-4 sm:px-6 md:px-12 z-20 hidden md:flex pointer-events-none">
<div className="absolute top-12 inset-x-0 px-4 sm:px-6 md:px-12 z-20 hidden md:flex pointer-events-none">
<div
className="transition-[flex-grow] duration-700 ease-out"
style={{ flexGrow: headingOnRight ? 1 : 0 }}

View File

@@ -12,18 +12,18 @@ Event participation house rules apply to everyone, both visitors and competitors
1. Participants are obligated to behave politely and with dignity and respect other event participants.
2. TipiLAN does not tolerate:
2.1. Hate speech based on national, racial, gender, sexual or religious affiliation, disabilities, appearance or age; harassment, threatening, offensive or aggressive behavior, incitement or support thereof
2.2. This applies both on the event premises (IRL) and in online environments related to the event.
1. Hate speech based on national, racial, gender, sexual or religious affiliation, disabilities, appearance or age; harassment, threatening, offensive or aggressive behavior, incitement or support thereof
2. This applies both on the event premises (IRL) and in online environments related to the event.
3. Participants are obligated to treat the event building, inventory and furnishings with care. It is forbidden to break, stain or move items that do not belong to the participant.
3.1. If a participant has organizer-provided accommodation, then in the accommodation area the participant is obligated to be quiet and allow companions to rest.
3.2. Persons who are not provided accommodation there may not be invited to the accommodation area.
1. If a participant has organizer-provided accommodation, then in the accommodation area the participant is obligated to be quiet and allow companions to rest.
2. Persons who are not provided accommodation there may not be invited to the accommodation area.
4. TipiLAN is not responsible for participants' personal property.
4.1. The organizer-provided accommodation area is lockable and unauthorized persons are not allowed there, but regardless of this, it is worth keeping an eye on your valuables.
4.2. If there is suspicion that theft has occurred, this must be immediately reported to the organizer.
4.3. When finding lost items, please give them to the organizer or take them to *lost & found* (Merchandise table).
1. The organizer-provided accommodation area is lockable and unauthorized persons are not allowed there, but regardless of this, it is worth keeping an eye on your valuables.
2. If there is suspicion that theft has occurred, this must be immediately reported to the organizer.
3. When finding lost items, please give them to the organizer or take them to *lost & found* (Merchandise table).
5. Smoking and using vapes is prohibited on the event premises. There are designated smoking areas outside for this purpose.
6. Illegal substances or drugs, sharp objects, firearms, explosives or incendiary materials and other items that may harm participants or others may not be brought to the event.
7. Underage participants are prohibited from consuming alcohol or using nicotine-containing products.
7.1. When purchasing alcohol from the bar, participants are obligated to show identification upon request by bar staff.
1. When purchasing alcohol from the bar, participants are obligated to show identification upon request by bar staff.
8. Participants are obligated to behave responsibly regarding alcohol.
9. Any form of gambling for money or other benefits is prohibited.

View File

@@ -10,21 +10,21 @@
# Ürituse kodukord
1. Osaleja kohustub käituma viisakalt ning väärikalt ja austama teisi üritusel osalejaid.
2. TipiLAN ei tolereeri:
2.1. Vihakõnet rahvusliku, rassilise, soolise, seksuaalse või religioosse kuuluvuse, puude, välimuse või vanuse kohta; ahistamist, ähvardavat, solvavat või agressiivset käitumist, sellele õhutamist või selle pooldamist
2.2. See kehtib nii ürituse alal (IRL) kui ka üritusega seotud online-keskkondades.
3. Osaleja kohustub käituma ürituse hoone, inventari ja sisustuse suhtes heaperemehelikult. Keelatud on lõhkuda, määrida või viia mujale esemeid, mis ei kuulu osalejale.
3.1. Kui osalejal on ette nähtud korraldajapoolne majutus, siis majutusalal on osalejal kohustus olla vaikselt ning lubada kaaslastel puhata.
3.2. Majutusalale ei või kaasa kutsuda isikuid, kellel ei ole seal majutust ette nähtud.
4. TipiLAN ei vastuta osaleja isikliku vara eest.
4.1. Korraldajapoolne majutusala on lukustatav ning kõrvalisi isikuid sinna ei lubata, kuid sellest sõltumata tasub oma väärisesemetel silma peal hoida.
4.2. Kui on tekkinud kahtlus, et on toimunud vargus, tuleb sellest koheselt teavitada korraldajat.
4.3. Kaotatud asjade leidmisel palume anda need korraldajale või viia need *lost & foundi* (Merchilauda).
1. Osaleja kohustub käituma viisakalt ning väärikalt ja austama teisi üritusel osalejaid.
2. TipiLAN ei tolereeri:
1. Vihakõnet rahvusliku, rassilise, soolise, seksuaalse või religioosse kuuluvuse, puude, välimuse või vanuse kohta; ahistamist, ähvardavat, solvavat või agressiivset käitumist, sellele õhutamist või selle pooldamist
2. See kehtib nii ürituse alal (IRL) kui ka üritusega seotud online-keskkondades.
3. Osaleja kohustub käituma ürituse hoone, inventari ja sisustuse suhtes heaperemehelikult. Keelatud on lõhkuda, määrida või viia mujale esemeid, mis ei kuulu osalejale.
1. Kui osalejal on ette nähtud korraldajapoolne majutus, siis majutusalal on osalejal kohustus olla vaikselt ning lubada kaaslastel puhata.
2. Majutusalale ei või kaasa kutsuda isikuid, kellel ei ole seal majutust ette nähtud.
4. TipiLAN ei vastuta osaleja isikliku vara eest.
1. Korraldajapoolne majutusala on lukustatav ning kõrvalisi isikuid sinna ei lubata, kuid sellest sõltumata tasub oma väärisesemetel silma peal hoida.
2. Kui on tekkinud kahtlus, et on toimunud vargus, tuleb sellest koheselt teavitada korraldajat.
3. Kaotatud asjade leidmisel palume anda need korraldajale või viia need *lost & foundi* (Merchilauda).
5. Ürituse alal on keelatud suitsetada ning kasutada vapei. Selleks on õues ette nähtud suitsetamise kohad.
6. Üritusele ei tohi kaasa võtta illegaalseid aineid või ravimeid, terariistu, tulirelvi, lõhke- või süüteained ning muid esemeid, mis võivad osalejatele või teistele viga teha.
7. Alaealisel osalejal on keelatud tarbida alkoholi või kasutada nikotiini sisaldavaid tooteid.
7.1. Olles baarist alkoholi ostmas, on osalejal baaritöötaja nõudmisel kohustus näidata isikuttõendavat dokumenti.
7. Alaealisel osalejal on keelatud tarbida alkoholi või kasutada nikotiini sisaldavaid tooteid.
1. Olles baarist alkoholi ostmas, on osalejal baaritöötaja nõudmisel kohustus näidata isikuttõendavat dokumenti.
8. Osaleja kohustub käituma alkoholi suhtes vastutustundlikult.
9. Keelatud on igasugune hasartmäng nii raha kui muude hüvede peale.