Fix short-rate calculation, add styling, add error messages, include disclaimer
This commit is contained in:
561
assets/calculator.js
Normal file
561
assets/calculator.js
Normal file
@ -0,0 +1,561 @@
|
||||
const shortRate = {
|
||||
1: 0.05,
|
||||
2: 0.06,
|
||||
3: 0.07,
|
||||
4: 0.07,
|
||||
5: 0.08,
|
||||
6: 0.08,
|
||||
7: 0.09,
|
||||
8: 0.09,
|
||||
9: 0.10,
|
||||
10: 0.10,
|
||||
11: 0.11,
|
||||
12: 0.11,
|
||||
13: 0.12,
|
||||
14: 0.12,
|
||||
15: 0.13,
|
||||
16: 0.13,
|
||||
17: 0.14,
|
||||
18: 0.14,
|
||||
19: 0.15,
|
||||
20: 0.15,
|
||||
21: 0.16,
|
||||
22: 0.16,
|
||||
23: 0.17,
|
||||
24: 0.17,
|
||||
25: 0.17,
|
||||
26: 0.18,
|
||||
27: 0.18,
|
||||
28: 0.18,
|
||||
29: 0.18,
|
||||
30: 0.19,
|
||||
31: 0.19,
|
||||
32: 0.19,
|
||||
33: 0.20,
|
||||
34: 0.20,
|
||||
35: 0.20,
|
||||
36: 0.20,
|
||||
37: 0.21,
|
||||
38: 0.21,
|
||||
39: 0.21,
|
||||
40: 0.21,
|
||||
41: 0.22,
|
||||
42: 0.22,
|
||||
43: 0.22,
|
||||
44: 0.77,
|
||||
45: 0.77,
|
||||
46: 0.77,
|
||||
47: 0.77,
|
||||
48: 0.24,
|
||||
49: 0.24,
|
||||
50: 0.24,
|
||||
51: 0.24,
|
||||
52: 0.25,
|
||||
53: 0.25,
|
||||
54: 0.25,
|
||||
55: 0.26,
|
||||
56: 0.26,
|
||||
57: 0.26,
|
||||
58: 0.26,
|
||||
59: 0.27,
|
||||
60: 0.27,
|
||||
61: 0.27,
|
||||
62: 0.27,
|
||||
63: 0.28,
|
||||
64: 0.28,
|
||||
65: 0.28,
|
||||
66: 0.29,
|
||||
67: 0.29,
|
||||
68: 0.29,
|
||||
69: 0.29,
|
||||
70: 0.30,
|
||||
71: 0.30,
|
||||
72: 0.30,
|
||||
73: 0.30,
|
||||
74: 0.31,
|
||||
75: 0.31,
|
||||
76: 0.31,
|
||||
77: 0.32,
|
||||
78: 0.32,
|
||||
79: 0.32,
|
||||
80: 0.32,
|
||||
81: 0.33,
|
||||
82: 0.33,
|
||||
83: 0.33,
|
||||
84: 0.34,
|
||||
85: 0.34,
|
||||
86: 0.34,
|
||||
87: 0.34,
|
||||
88: 0.35,
|
||||
89: 0.35,
|
||||
90: 0.35,
|
||||
91: 0.35,
|
||||
92: 0.36,
|
||||
93: 0.36,
|
||||
94: 0.36,
|
||||
95: 0.37,
|
||||
96: 0.37,
|
||||
97: 0.37,
|
||||
98: 0.37,
|
||||
99: 0.38,
|
||||
100: 0.38,
|
||||
101: 0.38,
|
||||
102: 0.38,
|
||||
103: 0.39,
|
||||
104: 0.39,
|
||||
105: 0.39,
|
||||
106: 0.40,
|
||||
107: 0.40,
|
||||
108: 0.40,
|
||||
109: 0.40,
|
||||
110: 0.41,
|
||||
111: 0.41,
|
||||
112: 0.41,
|
||||
113: 0.41,
|
||||
114: 0.42,
|
||||
115: 0.42,
|
||||
116: 0.42,
|
||||
117: 0.43,
|
||||
118: 0.43,
|
||||
119: 0.43,
|
||||
120: 0.43,
|
||||
121: 0.44,
|
||||
122: 0.44,
|
||||
123: 0.44,
|
||||
124: 0.44,
|
||||
125: 0.45,
|
||||
126: 0.45,
|
||||
127: 0.45,
|
||||
128: 0.46,
|
||||
129: 0.46,
|
||||
130: 0.46,
|
||||
131: 0.46,
|
||||
132: 0.47,
|
||||
133: 0.47,
|
||||
134: 0.47,
|
||||
135: 0.47,
|
||||
136: 0.48,
|
||||
137: 0.48,
|
||||
138: 0.48,
|
||||
139: 0.49,
|
||||
140: 0.49,
|
||||
141: 0.49,
|
||||
142: 0.49,
|
||||
143: 0.50,
|
||||
144: 0.50,
|
||||
145: 0.50,
|
||||
146: 0.50,
|
||||
147: 0.51,
|
||||
148: 0.51,
|
||||
149: 0.51,
|
||||
150: 0.52,
|
||||
151: 0.52,
|
||||
152: 0.52,
|
||||
153: 0.52,
|
||||
154: 0.53,
|
||||
155: 0.53,
|
||||
156: 0.53,
|
||||
157: 0.53,
|
||||
158: 0.54,
|
||||
159: 0.54,
|
||||
160: 0.54,
|
||||
161: 0.55,
|
||||
162: 0.55,
|
||||
163: 0.55,
|
||||
164: 0.55,
|
||||
165: 0.56,
|
||||
166: 0.56,
|
||||
167: 0.56,
|
||||
168: 0.57,
|
||||
169: 0.57,
|
||||
170: 0.57,
|
||||
171: 0.57,
|
||||
172: 0.58,
|
||||
173: 0.58,
|
||||
174: 0.58,
|
||||
175: 0.58,
|
||||
176: 0.59,
|
||||
177: 0.59,
|
||||
178: 0.59,
|
||||
179: 0.60,
|
||||
180: 0.60,
|
||||
181: 0.60,
|
||||
182: 0.60,
|
||||
183: 0.61,
|
||||
184: 0.61,
|
||||
185: 0.61,
|
||||
186: 0.61,
|
||||
187: 0.61,
|
||||
188: 0.62,
|
||||
189: 0.62,
|
||||
190: 0.62,
|
||||
191: 0.62,
|
||||
192: 0.63,
|
||||
193: 0.63,
|
||||
194: 0.63,
|
||||
195: 0.63,
|
||||
196: 0.63,
|
||||
197: 0.64,
|
||||
198: 0.64,
|
||||
199: 0.64,
|
||||
200: 0.64,
|
||||
201: 0.65,
|
||||
202: 0.65,
|
||||
203: 0.65,
|
||||
204: 0.65,
|
||||
205: 0.65,
|
||||
206: 0.66,
|
||||
207: 0.66,
|
||||
208: 0.66,
|
||||
209: 0.66,
|
||||
210: 0.67,
|
||||
211: 0.67,
|
||||
212: 0.67,
|
||||
213: 0.67,
|
||||
214: 0.67,
|
||||
215: 0.68,
|
||||
216: 0.68,
|
||||
217: 0.68,
|
||||
218: 0.68,
|
||||
219: 0.69,
|
||||
220: 0.69,
|
||||
221: 0.69,
|
||||
222: 0.69,
|
||||
223: 0.69,
|
||||
224: 0.70,
|
||||
225: 0.70,
|
||||
226: 0.70,
|
||||
227: 0.70,
|
||||
228: 0.70,
|
||||
229: 0.71,
|
||||
230: 0.71,
|
||||
231: 0.71,
|
||||
232: 0.71,
|
||||
233: 0.72,
|
||||
234: 0.72,
|
||||
235: 0.72,
|
||||
236: 0.72,
|
||||
237: 0.72,
|
||||
238: 0.73,
|
||||
239: 0.73,
|
||||
240: 0.73,
|
||||
241: 0.73,
|
||||
242: 0.74,
|
||||
243: 0.74,
|
||||
244: 0.74,
|
||||
245: 0.74,
|
||||
246: 0.74,
|
||||
247: 0.75,
|
||||
248: 0.75,
|
||||
249: 0.75,
|
||||
250: 0.75,
|
||||
251: 0.76,
|
||||
252: 0.76,
|
||||
253: 0.76,
|
||||
254: 0.76,
|
||||
255: 0.76,
|
||||
256: 0.77,
|
||||
257: 0.77,
|
||||
258: 0.77,
|
||||
259: 0.77,
|
||||
260: 0.77,
|
||||
261: 0.78,
|
||||
262: 0.78,
|
||||
263: 0.78,
|
||||
264: 0.78,
|
||||
265: 0.79,
|
||||
266: 0.79,
|
||||
267: 0.79,
|
||||
268: 0.79,
|
||||
269: 0.79,
|
||||
270: 0.80,
|
||||
271: 0.80,
|
||||
272: 0.80,
|
||||
273: 0.80,
|
||||
274: 0.81,
|
||||
275: 0.81,
|
||||
276: 0.81,
|
||||
277: 0.81,
|
||||
278: 0.81,
|
||||
279: 0.82,
|
||||
280: 0.82,
|
||||
281: 0.82,
|
||||
282: 0.82,
|
||||
283: 0.83,
|
||||
284: 0.83,
|
||||
285: 0.83,
|
||||
286: 0.83,
|
||||
287: 0.83,
|
||||
288: 0.84,
|
||||
289: 0.84,
|
||||
290: 0.84,
|
||||
291: 0.84,
|
||||
292: 0.85,
|
||||
293: 0.85,
|
||||
294: 0.85,
|
||||
295: 0.85,
|
||||
296: 0.85,
|
||||
297: 0.86,
|
||||
298: 0.86,
|
||||
299: 0.86,
|
||||
300: 0.86,
|
||||
301: 0.86,
|
||||
302: 0.87,
|
||||
303: 0.87,
|
||||
304: 0.87,
|
||||
305: 0.87,
|
||||
306: 0.88,
|
||||
307: 0.88,
|
||||
308: 0.88,
|
||||
309: 0.88,
|
||||
310: 0.88,
|
||||
311: 0.89,
|
||||
312: 0.89,
|
||||
313: 0.89,
|
||||
314: 0.89,
|
||||
315: 0.90,
|
||||
316: 0.90,
|
||||
317: 0.90,
|
||||
318: 0.90,
|
||||
319: 0.90,
|
||||
320: 0.91,
|
||||
321: 0.91,
|
||||
322: 0.91,
|
||||
323: 0.91,
|
||||
324: 0.92,
|
||||
325: 0.92,
|
||||
326: 0.92,
|
||||
327: 0.92,
|
||||
328: 0.92,
|
||||
329: 0.93,
|
||||
330: 0.93,
|
||||
331: 0.93,
|
||||
332: 0.93,
|
||||
333: 0.94,
|
||||
334: 0.94,
|
||||
335: 0.94,
|
||||
336: 0.94,
|
||||
337: 0.94,
|
||||
338: 0.95,
|
||||
339: 0.95,
|
||||
340: 0.95,
|
||||
341: 0.95,
|
||||
342: 0.95,
|
||||
343: 0.96,
|
||||
344: 0.96,
|
||||
345: 0.96,
|
||||
346: 0.96,
|
||||
347: 0.97,
|
||||
348: 0.97,
|
||||
349: 0.97,
|
||||
350: 0.97,
|
||||
351: 0.97,
|
||||
352: 0.98,
|
||||
353: 0.98,
|
||||
354: 0.98,
|
||||
355: 0.98,
|
||||
356: 0.99,
|
||||
357: 0.99,
|
||||
358: 0.99,
|
||||
360: 0.99,
|
||||
359: 0.99,
|
||||
361: 1.00,
|
||||
362: 1.00,
|
||||
363: 1.00,
|
||||
364: 1.00,
|
||||
365: 1.00,
|
||||
366: 1.00,
|
||||
};
|
||||
|
||||
function calculator() {
|
||||
// pull from input fields
|
||||
var effectiveDate = document.getElementById("effectiveDate").value;
|
||||
var expiryDate = document.getElementById("expiryDate").value;
|
||||
var cancelDate = document.getElementById("cancelDate").value;
|
||||
var totalPremium = document.getElementById("totalPremium").value;
|
||||
var breakDO = document.getElementById("breakDO").value || 0;
|
||||
var breakEO = document.getElementById("breakEO").value || 0;
|
||||
var breakCyber = document.getElementById("breakCyber").value || 0;
|
||||
var breakLEI = document.getElementById("breakLEI").value || 0;
|
||||
var breakCGL = document.getElementById("breakCGL").value || 0;
|
||||
var breakProperty = document.getElementById("breakProperty").value || 0;
|
||||
var breakEB = document.getElementById("breakEB").value || 0;
|
||||
|
||||
// calculate dates in policy term
|
||||
var policyDays = new Date(expiryDate).getTime() - new Date(effectiveDate).getTime();
|
||||
var termDays = policyDays / (1000 * 60 * 60 * 24);
|
||||
|
||||
// calculate dates involved with cancellation
|
||||
var cancelDays = new Date(cancelDate).getTime() - new Date(effectiveDate).getTime();
|
||||
var forceDays = cancelDays / (1000 * 60 * 60 * 24);
|
||||
var remainingDays = termDays - forceDays;
|
||||
|
||||
// calculate pro rata
|
||||
if(document.getElementById('calcProRata').checked) {
|
||||
var earnedFactor = Math.round(((forceDays / termDays) + Number.EPSILON)*1000)/1000;
|
||||
var unearnedFactor = Math.round(((remainingDays / termDays) + Number.EPSILON)*1000)/1000;
|
||||
document.getElementById("earnedFactor").className = 'blue';
|
||||
document.getElementById("unearnedFactor").className = 'blue';
|
||||
// calculate short rate
|
||||
}else if(document.getElementById('calcShortRate').checked) {
|
||||
const searchDate = forceDays;
|
||||
const shortRateFactor = shortRate[searchDate];
|
||||
var earnedFactor = shortRateFactor;
|
||||
var unearnedFactor = Math.round(((1 - shortRateFactor) + Number.EPSILON)*1000)/1000;
|
||||
document.getElementById("earnedFactor").className = 'blue';
|
||||
document.getElementById("unearnedFactor").className = 'blue';
|
||||
}else {
|
||||
var earnedFactor = 'ERROR'
|
||||
var unearnedFactor = 'ERROR'
|
||||
document.getElementById("earnedFactor").className = 'red';
|
||||
document.getElementById("unearnedFactor").className = 'red';
|
||||
}
|
||||
// calculate premiums
|
||||
var earnedPremium = Math.round(((totalPremium * earnedFactor) + Number.EPSILON)*100)/100;
|
||||
var unearnedPremium = Math.round(((totalPremium * unearnedFactor) + Number.EPSILON)*100)/100;
|
||||
document.getElementById("earnedPremium").className = 'green';
|
||||
document.getElementById("unearnedPremium").className = 'orange';
|
||||
|
||||
// calculate breakdown
|
||||
var calcBreak = +breakDO + +breakEO + +breakCyber + +breakLEI + +breakCGL + +breakProperty + +breakEB;
|
||||
// check if breakdown matches total premium
|
||||
var calcMatch = calcBreak-totalPremium;
|
||||
if(totalPremium<calcBreak && totalPremium > 1) {
|
||||
var checkMatch = "❌ Total breakdown does not match total premium. It is too high by " + calcMatch + ".";
|
||||
document.getElementById("checkMatch").className = 'red';
|
||||
var calculateBreakdown = false;
|
||||
}else if(totalPremium>calcBreak && totalPremium > 1) {
|
||||
var checkMatch = "❌ Total breakdown does not match total premium. It is too low by " + calcMatch + ".";
|
||||
document.getElementById("checkMatch").className = 'red';
|
||||
var calculateBreakdown = false;
|
||||
}else if(totalPremium > 1) {
|
||||
var checkMatch = "✅ Total breakdown matches total premium!";
|
||||
document.getElementById("checkMatch").className = 'green';
|
||||
var calculateBreakdown = true;
|
||||
}else {
|
||||
var checkMatch = "⚠️ More information is required to provide premium breakdown.";
|
||||
document.getElementById("checkMatch").className = 'orange';
|
||||
var calculateBreakdown = false;
|
||||
}
|
||||
|
||||
// calculate breakdowns
|
||||
if(calculateBreakdown == true) {
|
||||
var percentDO = Math.round((((breakDO / totalPremium) * 100) + Number.EPSILON)*100)/100;
|
||||
var earnedDO = Math.round(((breakDO * earnedFactor) + Number.EPSILON)*100)/100;
|
||||
var unearnedDO = Math.round(((breakDO * unearnedFactor) + Number.EPSILON)*100)/100;
|
||||
var percentEO = Math.round((((breakEO / totalPremium) * 100) + Number.EPSILON)*100)/100;
|
||||
var earnedEO = Math.round(((breakEO * earnedFactor) + Number.EPSILON)*100)/100;
|
||||
var unearnedEO = Math.round(((breakEO * unearnedFactor) + Number.EPSILON)*100)/100;
|
||||
var percentCyber = Math.round((((breakCyber / totalPremium) * 100) + Number.EPSILON)*100)/100;
|
||||
var earnedCyber = Math.round(((breakCyber * earnedFactor) + Number.EPSILON)*100)/100;
|
||||
var unearnedCyber = Math.round(((breakCyber * unearnedFactor) + Number.EPSILON)*100)/100;
|
||||
var percentLEI = Math.round((((breakLEI / totalPremium) * 100) + Number.EPSILON)*100)/100;
|
||||
var earnedLEI = Math.round(((breakLEI * earnedFactor) + Number.EPSILON)*100)/100;
|
||||
var unearnedLEI = Math.round(((breakLEI * unearnedFactor) + Number.EPSILON)*100)/100;
|
||||
var percentCGL = Math.round((((breakCGL / totalPremium) * 100) + Number.EPSILON)*100)/100;
|
||||
var earnedCGL = Math.round(((breakCGL * earnedFactor) + Number.EPSILON)*100)/100;
|
||||
var unearnedCGL = Math.round(((breakCGL * unearnedFactor) + Number.EPSILON)*100)/100;
|
||||
var percentProperty = Math.round((((breakProperty / totalPremium) * 100) + Number.EPSILON)*100)/100;
|
||||
var earnedProperty = Math.round(((breakProperty * earnedFactor) + Number.EPSILON)*100)/100;
|
||||
var unearnedProperty = Math.round(((breakProperty * unearnedFactor) + Number.EPSILON)*100)/100;
|
||||
var percentEB = Math.round((((breakEB / totalPremium) * 100) + Number.EPSILON)*100)/100;
|
||||
var earnedEB = Math.round(((breakEB * earnedFactor) + Number.EPSILON)*100)/100;
|
||||
var unearnedEB = Math.round(((breakEB * unearnedFactor) + Number.EPSILON)*100)/100;
|
||||
document.getElementById("percentDO").className = 'blue';
|
||||
document.getElementById("earnedDO").className = 'green';
|
||||
document.getElementById("unearnedDO").className = 'orange';
|
||||
document.getElementById("percentEO").className = 'blue';
|
||||
document.getElementById("earnedEO").className = 'green';
|
||||
document.getElementById("unearnedEO").className = 'orange';
|
||||
document.getElementById("percentCyber").className = 'blue';
|
||||
document.getElementById("earnedCyber").className = 'green';
|
||||
document.getElementById("unearnedCyber").className = 'orange';
|
||||
document.getElementById("percentLEI").className = 'blue';
|
||||
document.getElementById("earnedLEI").className = 'green';
|
||||
document.getElementById("unearnedLEI").className = 'orange';
|
||||
document.getElementById("percentCGL").className = 'blue';
|
||||
document.getElementById("earnedCGL").className = 'green';
|
||||
document.getElementById("unearnedCGL").className = 'orange';
|
||||
document.getElementById("percentProperty").className = 'blue';
|
||||
document.getElementById("earnedProperty").className = 'green';
|
||||
document.getElementById("unearnedProperty").className = 'orange';
|
||||
document.getElementById("percentEB").className = 'blue';
|
||||
document.getElementById("earnedEB").className = 'green';
|
||||
document.getElementById("unearnedEB").className = 'orange';
|
||||
}else {
|
||||
var percentDO = 'ERROR'
|
||||
var earnedDO = 'ERROR'
|
||||
var unearnedDO = 'ERROR'
|
||||
var percentEO = 'ERROR'
|
||||
var earnedEO = 'ERROR'
|
||||
var unearnedEO = 'ERROR'
|
||||
var percentCyber = 'ERROR'
|
||||
var earnedCyber = 'ERROR'
|
||||
var unearnedCyber = 'ERROR'
|
||||
var percentLEI = 'ERROR'
|
||||
var earnedLEI = 'ERROR'
|
||||
var unearnedLEI = 'ERROR'
|
||||
var percentCGL = 'ERROR'
|
||||
var earnedCGL = 'ERROR'
|
||||
var unearnedCGL = 'ERROR'
|
||||
var percentProperty = 'ERROR'
|
||||
var earnedProperty = 'ERROR'
|
||||
var unearnedProperty = 'ERROR'
|
||||
var percentEB = 'ERROR'
|
||||
var earnedEB = 'ERROR'
|
||||
var unearnedEB = 'ERROR'
|
||||
document.getElementById("percentDO").className = 'red';
|
||||
document.getElementById("earnedDO").className = 'red';
|
||||
document.getElementById("unearnedDO").className = 'red';
|
||||
document.getElementById("percentEO").className = 'red';
|
||||
document.getElementById("earnedEO").className = 'red';
|
||||
document.getElementById("unearnedEO").className = 'red';
|
||||
document.getElementById("percentCyber").className = 'red';
|
||||
document.getElementById("earnedCyber").className = 'red';
|
||||
document.getElementById("unearnedCyber").className = 'red';
|
||||
document.getElementById("percentLEI").className = 'red';
|
||||
document.getElementById("earnedLEI").className = 'red';
|
||||
document.getElementById("unearnedLEI").className = 'red';
|
||||
document.getElementById("percentCGL").className = 'red';
|
||||
document.getElementById("earnedCGL").className = 'red';
|
||||
document.getElementById("unearnedCGL").className = 'red';
|
||||
document.getElementById("percentProperty").className = 'red';
|
||||
document.getElementById("earnedProperty").className = 'red';
|
||||
document.getElementById("unearnedProperty").className = 'red';
|
||||
document.getElementById("percentEB").className = 'red';
|
||||
document.getElementById("earnedEB").className = 'red';
|
||||
document.getElementById("unearnedEB").className = 'red';
|
||||
}
|
||||
|
||||
// display policy terms
|
||||
document.getElementById("termDays").innerHTML = termDays;
|
||||
document.getElementById("forceDays").innerHTML = forceDays;
|
||||
document.getElementById("remainingDays").innerHTML = remainingDays;
|
||||
document.getElementById("earnedFactor").innerHTML = earnedFactor;
|
||||
document.getElementById("unearnedFactor").innerHTML = unearnedFactor;
|
||||
document.getElementById("earnedPremium").innerHTML = earnedPremium;
|
||||
document.getElementById("unearnedPremium").innerHTML = unearnedPremium;
|
||||
// display breakdown
|
||||
document.getElementById("checkMatch").innerHTML = checkMatch;
|
||||
document.getElementById("percentDO").innerHTML = percentDO;
|
||||
document.getElementById("earnedDO").innerHTML = earnedDO;
|
||||
document.getElementById("unearnedDO").innerHTML = unearnedDO;
|
||||
document.getElementById("percentEO").innerHTML = percentEO;
|
||||
document.getElementById("earnedEO").innerHTML = earnedEO;
|
||||
document.getElementById("unearnedEO").innerHTML = unearnedEO;
|
||||
document.getElementById("percentCyber").innerHTML = percentCyber;
|
||||
document.getElementById("earnedCyber").innerHTML = earnedCyber;
|
||||
document.getElementById("unearnedCyber").innerHTML = unearnedCyber;
|
||||
document.getElementById("percentLEI").innerHTML = percentLEI;
|
||||
document.getElementById("earnedLEI").innerHTML = earnedLEI;
|
||||
document.getElementById("unearnedLEI").innerHTML = unearnedLEI;
|
||||
document.getElementById("percentCGL").innerHTML = percentCGL;
|
||||
document.getElementById("earnedCGL").innerHTML = earnedCGL;
|
||||
document.getElementById("unearnedCGL").innerHTML = unearnedCGL;
|
||||
document.getElementById("percentProperty").innerHTML = percentProperty;
|
||||
document.getElementById("earnedProperty").innerHTML = earnedProperty;
|
||||
document.getElementById("unearnedProperty").innerHTML = unearnedProperty;
|
||||
document.getElementById("percentEB").innerHTML = percentEB;
|
||||
document.getElementById("earnedEB").innerHTML = earnedEB;
|
||||
document.getElementById("unearnedEB").innerHTML = unearnedEB;
|
||||
}
|
BIN
assets/favicon.ico
Normal file
BIN
assets/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 318 B |
190
assets/style.css
Normal file
190
assets/style.css
Normal file
@ -0,0 +1,190 @@
|
||||
html, body, div, span, applet, object, iframe,
|
||||
:root {
|
||||
--width: 900px;
|
||||
--font-family: Verdana, sans-serif;
|
||||
--font-scale: 1em;
|
||||
--bg-100: #100F0F;
|
||||
--bg-200: #1C1B1A;
|
||||
--ui-100: #282726;
|
||||
--ui-200: #343331;
|
||||
--ui-300: #403E3C;
|
||||
--text-100: #CECDC3;
|
||||
--text-200: #878580;
|
||||
--text-300: #575653;
|
||||
|
||||
--blue-400: #4385BE;
|
||||
--cyan-400: #3AA99F;
|
||||
--green-400: #879A39;
|
||||
--orange-400: #DA702C;
|
||||
--purple-400: #8B7EC8;
|
||||
--red-400: #D14D41;
|
||||
--yellow-400: #D0A215;
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0 auto;
|
||||
padding: 0 16px;
|
||||
max-width: var(--width);
|
||||
background-color: var(--bg-100);
|
||||
font-family: var(--font-family);
|
||||
font-size: var(--font-scale);
|
||||
color: var(--text-100);
|
||||
}
|
||||
|
||||
.blue { color: var(--blue-400); }
|
||||
.cyan { color: var(--cyan-400); }
|
||||
.green { color: var(--green-400); }
|
||||
.orange { color: var(--orange-400); }
|
||||
.purple { color: var(--purple-400); }
|
||||
.red { color: var(--red-400); }
|
||||
|
||||
h1, h2, h3 {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
h2 {
|
||||
margin: 1rem 0;
|
||||
}
|
||||
|
||||
a,
|
||||
a:visited {
|
||||
color: var(--text-100);
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 3px;
|
||||
text-decoration-thickness: 1px;
|
||||
text-decoration-style: solid;
|
||||
text-decoration-color: var(--cyan-400);
|
||||
}
|
||||
a:hover {
|
||||
color: var(--cyan-400);
|
||||
text-decoration: underline;
|
||||
text-decoration-style: solid;
|
||||
text-decoration-color: var(--cyan-400);
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0 0 0 1rem;
|
||||
}
|
||||
li {
|
||||
list-style-type: square;
|
||||
}
|
||||
|
||||
form {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
button {
|
||||
margin-top: 2rem;
|
||||
padding: 10px;
|
||||
width: 100%;
|
||||
border: 1px solid var(--ui-100);
|
||||
background-color: var(--bg-200);
|
||||
color: var(--text-100);
|
||||
}
|
||||
button:hover{
|
||||
border: 1px solid var(--ui-300);
|
||||
}
|
||||
input {
|
||||
border: 1px solid var(--ui-100);
|
||||
background-color: var(--bg-200);
|
||||
color: var(--text-100);
|
||||
}
|
||||
input:hover {
|
||||
border-color: var(--ui-300);
|
||||
}
|
||||
input:focus {
|
||||
outline: none;
|
||||
border-color: var(--cyan-400);
|
||||
}
|
||||
input::-webkit-outer-spin-button,
|
||||
input::-webkit-inner-spin-button {
|
||||
-webkit-appearance: none;
|
||||
margin: 0;
|
||||
}
|
||||
input[type="number"] {
|
||||
-moz-appearance: textfield;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 1rem 0;
|
||||
padding: 16px;
|
||||
border-top: 1px dotted var(--yellow-400);
|
||||
border-right: 1px dotted var(--yellow-400);
|
||||
border-bottom: 1px dotted var(--yellow-400);
|
||||
border-left: 8px solid var(--yellow-400);
|
||||
background-color: var(--bg-200);
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
border: 1px solid var(--ui-100);
|
||||
background-color: var(--bg-200);
|
||||
}
|
||||
tr {
|
||||
border: 1px solid var(--ui-100);
|
||||
}
|
||||
th {
|
||||
padding: 4px 16px;
|
||||
border-right: 1px solid var(--ui-100);
|
||||
background-color: var(--ui-200);
|
||||
}
|
||||
td {
|
||||
padding: 4px 16px;
|
||||
border-right: 1px solid var(--ui-100);
|
||||
}
|
||||
tr td:nth-child(3) {
|
||||
text-align: center;
|
||||
}
|
||||
tr td:nth-child(4),
|
||||
tr td:nth-child(5) {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
header {
|
||||
margin-top: 4rem;
|
||||
}
|
||||
|
||||
main {
|
||||
margin: 4rem 0;
|
||||
}
|
||||
|
||||
.flex-container {
|
||||
display: flex;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
flex-direction: row;
|
||||
gap: 2rem 1rem;
|
||||
flex-wrap: wrap;
|
||||
align-items: flex-start;
|
||||
justify-content: center;
|
||||
}
|
||||
.flex-1 {
|
||||
order: 1;
|
||||
flex-grow: 1;
|
||||
}
|
||||
.flex-2{
|
||||
order: 2;
|
||||
flex-grow: 1
|
||||
}
|
||||
.flex-3 {
|
||||
order: 3;
|
||||
flex-grow: 2;
|
||||
}
|
||||
.flex-4 {
|
||||
order: 4;
|
||||
flex-grow: 2;
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-bottom: 4rem;
|
||||
padding-top: 2rem;
|
||||
border-top: 1px dotted var(--ui-100);
|
||||
font-size: .875em;
|
||||
color: var(--text-200);
|
||||
}
|
Reference in New Issue
Block a user