<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-9.xsd">
	<head>
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<style>
			.main {
				background-color: #f5f5f5;
				font-family: 'Segoe UI', sans-serif;
				-webkit-font-smoothing: antialiased;
				font-size: 14px;
				line-height: 1.4;
				margin: 0;
				padding: 0;
				-ms-text-size-adjust: 100%;
				-webkit-text-size-adjust: 100%;
				font-size: 14px;
			}
			h2 {
				font-size: 25px;
				font-weight: normal;
				margin: 0;
				margin-bottom: 15px;
			}
			p, span {
				margin-bottom: 1em;
			}
			a {
				color: #007bff;
				text-decoration: none;
			}
			.container {
				max-width: 580px;
				margin: 0 auto;
				padding: 20px;
				width: 100%;
			}
			.wrapper {
				max-width: 540px;
				margin: 0 auto;
				padding: 15px;
				width: 100%;
				border-radius: 5px;
				background-color: #fff;
			}
			.action a {
				box-sizing: border-box;
				cursor: pointer;
				display: inline-block;
				font-weight: bold;
				margin: 0;
				border-radius: 5px;
				padding: 12px 25px;
				background-color: #3498db;
				border-color: #3498db;
				color: #ffffff;
			}
			@media only screen and (max-width: 620px) {
				.container {
					padding: 0;
					width: 100%;
					text-align: center;
				}
				.wrapper {
					max-width: 560px;
					margin: 0 auto;
					padding: 10px;
					border-left-width: 0;
					border-radius: 0;
					border-right-width: 0;
				}
				.wrapper .action {
					text-align: center;
					margin-top: 25px;
				}

				.wrapper .action a {
					display: block;
					margin: 0;
					padding: 12px 25px;
				}
			}
		</style>
	</head>
	<body>
		<div wicket:id="container">
			<wicket:child/>
		</div>
	</body>
</html>
