| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373 |
- @font-face {
- font-family: 'Nunito';
- font-style: normal;
- font-weight: 200 1000;
- src: url(/fonts/nunito-variable.woff2) format('woff2');
- }
- :root {
- --bg-color: hsl(206, 12%, 95%);
- --text-color: hsl(200, 35%, 25%);
- --color-primary: #2196f3;
- --outline-color: #14e0ff;
- --button-bg: linear-gradient(to right, #e0e0e0, #bdbdbd);
- --button-bg-box-shadow-color: rgba(160, 160, 160, 0.5);
- --button-bg-primary: linear-gradient(to right, #42a5f5, #2979ff);
- --button-bg-primary-box-shadow-color: rgba(66, 165, 245, 0.5);
- --button-bg-secondary: linear-gradient(to right, #7e57c2, #6200ea);
- --button-bg-secondary-box-shadow-color: rgba(81, 45, 168, 0.5);
- --button-bg-danger: linear-gradient(to right, #ee3b3b, #e11c1c);
- --button-bg-danger-box-shadow-color: rgba(168, 45, 45, 0.5);
- --button-bg-success: linear-gradient(to right, #31b647, #26be3f);
- --button-bg-success-box-shadow-color: rgba(25, 221, 51, 50%);
- --features-bg: hsl(230, 15%, 92%);
- --extensions-bg: hsl(230, 15%, 20%);
- --send-icon-hover-color: #673ab7;
- --send-spinner-icon-color: hsl(200, 15%, 70%);
- --success-icon-color: hsl(144, 40%, 57%);
- --error-icon-color: #f24f4f;
- --copy-icon-color: hsl(144, 40%, 57%);
- --copy-icon-bg-color: hsl(144, 100%, 96%);
- --keyframe-slidey-offset: 0;
- }
- /* ANIMATIONS */
- @keyframes spin {
- from { transform: rotate(0deg); }
- to { transform: rotate(360deg); }
- }
- @keyframes fadein {
- from { opacity: 0 }
- to { opacity: 1 }
- }
- @keyframes slidey {
- from { transform: translateY(var(--keyframe-slidey-offset)) }
- to { transform: translateY(0) }
- }
- /* GENERAL */
- body {
- margin: 0;
- padding: 0;
- background-color: var(--bg-color);
- font: 16px/1.45 'Nunito', sans-serif;
- overflow-x: hidden;
- color: var(--text-color);
- }
- * {
- box-sizing: border-box;
- outline-color: var(--outline-color);
- }
- *::-moz-focus-inner {
- border: none;
- }
- a {
- color: var(--color-primary);
- border-bottom: 1px dotted transparent;
- text-decoration: none;
- transition: all 0.2s ease-out;
- }
- a:hover {
- border-bottom-color: var(--color-primary);
- }
- a.nav {
- color: inherit;
- padding-bottom: 2px;
- }
- a.nav:hover {
- color: var(--color-primary);
- }
- a.button,
- button {
- position: relative;
- width: auto;
- height: 40px;
- display: flex;
- align-items: center;
- justify-content: center;
- padding: 0 32px;
- font-size: 13px;
- font-weight: normal;
- text-align: center;
- line-height: 1;
- word-break: keep-all;
- color: #444;
- border: none;
- border-radius: 100px;
- transition: all 0.4s ease-out;
- cursor: pointer;
- overflow: hidden;
- background: var(--button-bg);
- box-shadow: 0 5px 6px var(--button-bg-box-shadow-color);
- }
- a.button.primary,
- button.primary {
- color: white;
- background: var(--button-bg-primary);
- box-shadow: 0 5px 6px var(--button-bg-primary-box-shadow-color);
- }
- a.button.secondary,
- button.secondary {
- color: white;
- background: var(--button-bg-secondary);
- box-shadow: 0 5px 6px var(--button-bg-secondary-box-shadow-color);
- }
- a.button.danger,
- button.danger {
- color: white;
- background: var(--button-bg-danger);
- box-shadow: 0 5px 6px var(--button-bg-danger-box-shadow-color);
- }
- a.button.success,
- button.success {
- color: white;
- background: var(--button-bg-success);
- box-shadow: 0 5px 6px var(--button-bg-success-box-shadow-color);
- }
- a.button:focus,
- a.button:hover,
- button:focus,
- button:hover {
- box-shadow: 0 6px 15px var(--button-bg-box-shadow-color);
- transform: translateY(-2px) scale(1.02, 1.02);
- }
- a.button.primary:focus,
- a.button.primary:hover,
- button.primary:focus,
- button.primary:hover {
- box-shadow: 0 6px 15px var(--button-bg-primary-box-shadow-color);
- }
- a.button.secondary:focus,
- a.button.secondary:hover,
- button.secondary:focus,
- button.secondary:hover {
- box-shadow: 0 6px 15px var(--button-bg-secondary-box-shadow-color);
- }
- a.button.danger:focus,
- a.button.danger:hover,
- button.danger:focus,
- button.danger:hover {
- box-shadow: 0 6px 15px var(--button-bg-danger-box-shadow-color);
- }
- a.button.success:focus,
- a.button.success:hover,
- button.success:focus,
- button.success:hover {
- box-shadow: 0 6px 15px var(--button-bg-success-box-shadow-color);
- }
- button svg.with-text,
- button span.icon svg {
- width: 16px;
- height: auto;
- margin-right: 0.5rem;
- stroke: white;
- stroke-width: 2;
- }
- button.action {
- padding: 5px;
- width: 24px;
- height: 24px;
- box-shadow: 0 2px 1px hsla(200, 15%, 60%, 0.12);
- }
- button.action svg {
- width: 100%;
- margin-right: 0;
- }
- button.action.delete {
- background: hsl(0, 100%, 96%);
- }
- button.action.delete svg {
- stroke-width: 2;
- stroke: hsl(0, 100%, 69%);
- }
- button.action.edit {
- background: hsl(46, 100%, 94%);
- }
- button.action.edit svg {
- stroke-width: 2.5;
- stroke: hsl(46, 90%, 50%);
- }
- button.action.stats {
- background: hsl(260, 100%, 96%);
- }
- button.action.stats svg {
- stroke-width: 2.5;
- stroke: hsl(260, 100%, 69%);
- }
- button.table-nav {
- box-sizing: border-box;
- width: auto;
- height: 28px;
- display: flex;
- flex: 0 0 auto;
- align-items: center;
- justify-content: center;
- padding: 0 8px;
- border: none;
- border-radius: 4px;
- box-shadow: 0 0px 10px rgba(100, 100, 100, 0.1);
- background: none;
- background-color: white;
- transition: all 0.2s ease-in-out;
- font-size: 12px;
- cursor: pointer;
- }
- button.table-nav:disabled {
- background-color: #f6f6f6;
- box-shadow: 0 0px 5px rgba(150, 150, 150, 0.1);
- opacity: 0.9;
- color: #bbb;
- cursor: default;
- }
- button.table-nav svg {
- width: 14px;
- height: auto;
- }
- button.table-nav svg { stroke-width: 2.5; }
- button.table-nav:hover { transform: translateY(-2px); }
- button.table-nav:disabled:hover { transform: none; }
- svg.spinner {
- animation: spin 1s linear infinite, fadein 0.3s ease-in-out;
- }
- input {
- filter: none;
- }
- input[type="text"],
- input[type="email"],
- input[type="password"] {
- box-sizing: border-box;
- width: 240px;
- height: 44px;
- padding: 0 24px;
- font-size: 15px;
- letter-spacing: 0.05em;
- color: #444;
- background-color: white;
- border: none;
- border-radius: 100px;
- border-bottom: 5px solid #f5f5f5;
- border-bottom-width: 5px;
- box-shadow: 0 10px 35px hsla(200, 15%, 70%, 0.2);
- transition: all 0.5s ease-out;
- }
- input[type="text"]:focus,
- input[type="email"]:focus,
- input[type="password"]:focus {
- outline: none;
- box-shadow: 0 20px 35px hsla(200, 15%, 70%, 0.4);
- }
- input[type="text"]::placeholder,
- input[type="email"]::placeholder,
- input[type="password"]::placeholder {
- font-size: 14px;
- letter-spacing: 0.05em;
- color: #888;
- }
- .error input[type="text"],
- .error input[type="email"],
- .error input[type="password"] {
- border-bottom-color: rgba(250, 10, 10, 0.8);
- box-shadow: 0 10px 15px hsla(0, 100%, 75%, 0.2);
- }
- select {
- position: relative;
- width: 240px;
- height: 44px;
- padding: 0 24px;
- font-size: 15px;
- box-sizing: border-box;
- letter-spacing: 0.05em;
- color: #444;
- background-color: white;
- box-shadow: 0 10px 35px hsla(200, 15%, 70%, 0.2);
- border: none;
- border-radius: 100px;
- border-bottom: 5px solid #f5f5f5;
- border-bottom-width: 5px;
- transition: all 0.5s ease-out;
- appearance: none;
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 24 24' fill='none' stroke='%235c666b' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
- background-repeat: no-repeat, repeat;
- background-position: right 1.2em top 50%, 0 0;
- background-size: 1em auto, 100%;
- }
- select:focus {
- outline: none;
- box-shadow: 0 20px 35px hsla(200, 15%, 70%, 0.4);
- }
- .error select {
- border-bottom-color: rgba(250, 10, 10, 0.8);
- box-shadow: 0 10px 15px hsla(0, 100%, 75%, 0.2);
- }
- input[type="checkbox"] {
- position: relative;
- width: 1rem;
- height: 1rem;
- display: flex;
- align-items: center;
- justify-content: center;
- border-radius: 4px;
- background-color: white;
- box-shadow: 0 2px 4px rgba(50, 50, 50, 0.2);
- margin: 0;
- -webkit-appearance: none;
- appearance: none;
- cursor: pointer;
- }
- input[type="checkbox"]:focus {
- outline: 3px solid rgba(65, 164, 245, 0.5);
- }
- input[type="checkbox"]::after {
- content: "";
- position: absolute;
- top: 50%;
- left: 50%;
- width: 80%;
- height: 80%;
- display: block;
- border-radius: 2px;
- background-color: #9575cd;
- box-shadow: 0 2px 4px rgba(50, 50, 50, 0.2);
- cursor: pointer;
- opacity: 0;
- transform: translate(-50%, -50%) scale(0);
- transition: all 0.1s ease-in-out;
- }
- input[type="checkbox"]:checked:after {
- opacity: 1;
- transform: translate(-50%, -50%) scale(1);
- }
- label {
- display: flex;
- color: #555;
- font-size: 15px;
- flex-direction: column;
- align-items: flex-start;
- font-weight: bold;
- }
- label input {
- margin-top: 0.5rem;
- }
- label.checkbox {
- flex-direction: row;
- align-items: center;
- cursor: pointer;
- font-weight: normal;
- }
- label.checkbox input[type="checkbox"] {
- margin: 0 0.75rem 2px 0;
- }
- p.error,
- p.success {
- font-weight: normal;
- animation: fadein 0.3s ease-in-out;
- }
- p.error { color: red; }
- p.success { color: #0ea30e; }
- table {
- width: 100%;
- display: flex;
- flex-direction: column;
- background-color: white;
- border-radius: 12px;
- box-shadow: 0 6px 15px hsla(200, 20%, 70%, 0.3);
- text-align: center;
- overflow: auto;
- }
- table tr {
- flex: 1 1 auto;
- }
- table tr,
- table th,
- table td,
- table tbody,
- table thead,
- table tfoot {
- display: flex;
- overflow: hidden;
- }
- table tbody,
- table thead,
- table tfoot {
- flex-direction: column;
- }
- table tr {
- border-bottom: 1px solid hsl(200, 14%, 94%);
- }
- table tbody {
- border-bottom-right-radius: 12px;
- border-bottom-left-radius: 12px;
- overflow: hidden;
- animation: fadein 0.3s ease-in-out;
- }
- table tbody + tfoot {
- border: none;
- }
- table thead {
- background-color: hsl(200, 12%, 95%);
- border-top-right-radius: 12px;
- border-top-left-radius: 12px;
- font-weight: bold;
- }
- table thead tr {
- border-bottom: 1px solid hsl(200, 14%, 90%);
- }
- table tfoot {
- background-color: hsl(200, 12%, 95%);
- border-bottom-right-radius: 12px;
- border-bottom-left-radius: 12px;
- }
- table tr.loading-placeholder {
- flex: 1 1 auto;
- justify-content: center;
- animation: fadein 0.3s ease-in-out;
- }
- table tr.loading-placeholder td {
- flex: 0 0 auto;
- font-size: 18px;
- font-weight: 300;
- }
- .dialog {
- position: fixed;
- width: 100%;
- height: 100%;
- top: 0;
- left: 0;
- display: none;
- justify-content: center;
- align-items: center;
- background-color: rgba(50, 50, 50, 0.8);
- z-index: 1000;
- animation: fadein 0.2s ease-in-out;
- }
- .dialog.open { display: flex; }
- .dialog .box {
- min-width: 450px;
- max-width: 90%;
- display: flex;
- flex-direction: column;
- align-items: center;
- padding: 3rem 2rem;
- background-color: white;
- border-radius: 8px;
- --keyframe-slidey-offset: -30px;
- animation: slidey 0.2s ease-in-out;
- }
- .dialog .content-wrapper {
- display: flex;
- flex-direction: column;
- }
- .dialog .loading {
- display: none;
- width: 24px;
- height: 24px;
- margin: 3rem 0;
- animation: fadein 0.2s ease-in-out;
- }
- .dialog.htmx-request .loading {
- display: block;
- }
- .dialog.htmx-request .content-wrapper {
- display: none;
- }
- .dialog .loading svg {
- animation: spin 1s linear infinite;
- }
- .dialog .content {
- display: flex;
- flex-direction: column;
- animation: fadein 0.2s ease-in-out;
- }
- .dialog .content h2 {
- font-weight: bold !important;
- margin-bottom: 0.5rem !important;
- margin-top: 0;
- }
- .dialog .content .link-to-delete { font-weight: bold; }
- .dialog .content .buttons {
- display: flex;
- align-items: center;
- margin-top: 1.5rem;
- }
- .dialog .content .buttons button { margin-right: 2rem; }
- .dialog .content .buttons button:last-child { margin-right: 0; }
- .dialog .content {
- align-items: center;
- }
- .dialog .content #dialog-error {
- margin-top: 1rem;
- margin-bottom: -1rem;
- }
- .dialog .content .icon {
- width: 48px;
- height: 48px;
- border-radius: 100%;
- padding: 5px;
- margin-bottom: 1.5rem;
- border: 2px solid;
- }
- .dialog .content .icon svg {
- width: 100%;
- height: auto;
- }
- .dialog .content .icon.success {
- border-color: var(--success-icon-color);
- }
- .dialog .content .icon.success svg {
- stroke-width: 2;
- stroke: var(--success-icon-color);
- }
- .dialog .content .icon.error {
- border-color: var(--error-icon-color);
- }
- .dialog .content .icon.error svg {
- stroke-width: 1.5;
- stroke: var(--error-icon-color);
- }
- .dialog .content svg.spinner {
- display: none;
- width: 24px;
- margin: 0.5rem 0;
- }
- .dialog .content.htmx-request svg.spinner { display: block; }
- .dialog .content.htmx-request button { display: none; }
- /* DISTINCT */
- .main-wrapper {
- min-height: 100vh;
- width: 100%;
- display: flex;
- flex: 0 0 auto;
- align-items: center;
- flex-direction: column;
- }
- /* LOGIN & SIGNUP */
- form#login-signup {
- max-width: 100%;
- flex: 1 1 auto;
- display: flex;
- flex-direction: column;
- width: 400px;
- margin: 3rem 0 0;
- }
- form#login-signup label {
- font-size: 16px;
- margin-bottom: 2rem;
- }
- form#login-signup input {
- width: 100%;
- height: 72px;
- margin-top: 1rem;
- padding: 0 3rem;
- font-size: 16px;
- }
- form#login-signup .buttons-wrapper {
- display: flex;
- align-items: center;
- margin-bottom: 1.5rem;
- }
- form#login-signup .buttons-wrapper button {
- height: 56px;
- flex: 1 1 auto;
- padding: 0 1rem 2px;
- margin-right: 1rem;
- }
- form#login-signup .buttons-wrapper button:last-child { margin-right: 0; }
- form#login-signup a.forgot-password {
- align-self: flex-start;
- font-size: 14px;
- }
- form#login-signup svg.spinner { display: none; }
- form#login-signup.htmx-request:not(.signup) .login svg.spinner { display: block; }
- form#login-signup.htmx-request:not(.signup) .login svg.icon { display: none; }
- form#login-signup.htmx-request.signup .signup svg.spinner { display: block; }
- form#login-signup.htmx-request.signup .signup svg.icon { display: none; }
- form#login-signup.htmx-request .error { opacity: 0; }
- form#login-signup p.error {
- margin-bottom: 0;
- }
- .login-signup-message {
- flex: 1 1 auto;
- margin-top: 3rem;
- }
- .login-signup-message h1 {
- font-weight: 300;
- font-size: 24px;
- }
- /* HEADER */
- header {
- box-sizing: border-box;
- margin: 0;
- width: 1232px;
- max-width: 100%;
- padding: 0 32px;
- height: 102px;
- justify-content: space-between;
- align-items: center;
- display: flex;
- }
- header .logo-wrapper {
- display: flex;
- align-items: center;
- }
- header a.logo {
- position: relative;
- display: flex;
- align-items: center;
- font-size: 22px;
- font-weight: bold;
- text-decoration: none;
- border: none;
- margin: 0;
- padding: 0;
- }
- header a.logo:hover { border: none; color: inherit; }
- header .logo img {
- margin: 0 12px 0 0;
- padding: 0;
- }
- header ul.logo-links {
- list-style: none;
- display: flex;
- align-items: flex-end;
- margin: 0 0 0 0.5rem;
- padding: 0;
- }
- header ul.logo-links li {
- padding: 2px 0 0;
- margin: 0 0 0 32px;
- }
- header ul.logo-links li a {
- font-size: 16px;
- }
- header nav ul {
- display: flex;
- flex-direction: row-reverse;
- align-items: center;
- list-style: none;
- margin: 0;
- padding: 0;
- }
- header nav ul li {
- margin: 0 0 0 32px;
- padding: 0;
- }
- header nav ul li:last-child { margin-left: 0; }
- /* SHORTENER */
- main {
- width: 800px;
- max-width: 100%;
- flex: 0 0 auto;
- display: flex;
- flex-direction: column;
- align-items: center;
- padding: 0 1rem;
- margin-top: 1rem;
- }
- main #shorturl {
- display: flex;
- align-items: center;
- margin: 1rem 0 3rem;
- }
- main #shorturl h1 {
- margin: 0;
- border-bottom: 2px dotted transparent;
- font-weight: 300;
- font-size: 2rem;
- }
- main #shorturl h1.link {
- cursor: pointer;
- border-bottom-color: hsl(200, 35%, 65%);
- transition: opacity 0.3s ease-in-out;
- --keyframe-slidey-offset: -10px;
- animation: fadein 0.2s ease-in-out, slidey 0.2s ease-in-out;
- }
- main #shorturl h1.link:hover {
- opacity: 0.8;
- }
- main #shorturl .clipboard {
- width: 35px;
- height: 35px;
- display: flex;
- margin-right: 1rem;
- }
- main #shorturl button {
- width: 100%;
- height: 100%;
- display: flex;
- margin: 0;
- padding: 7px;
- box-shadow: none;
- outline: none;
- border: none;
- background: none;
- border-radius: 100%;
- background-color: var(--copy-icon-bg-color);
- transition: transform 0.4s ease-out;
- box-shadow: 0 2px 1px hsla(200, 15%, 60%, 0.12);
- cursor: pointer;
- --keyframe-slidey-offset: -10px;
- animation: slidey 0.2s ease-in-out;
- }
- main #shorturl button:hover,
- main #shorturl button:focus {
- transform: translateY(-2px) scale(1.02, 1.02);
- }
- main #shorturl button:focus {
- outline: 3px solid rgba(65, 164, 245, 0.5);
- }
- main #shorturl svg {
- stroke: var(--copy-icon-color);
- width: 100%;
- height: auto;
- }
- main #shorturl svg.copy {
- stroke-width: 2.5;
- }
- main #shorturl svg.check {
- display: none;
- padding: 3px;
- stroke-width: 3;
- --keyframe-slidey-offset: -10px;
- animation: slidey 0.2s ease-in-out;
- }
- main #shorturl.copied button {
- background-color: transparent;
- box-shadow: none;
- }
- main #shorturl.copied button { display: none; }
- main #shorturl.copied svg.check { display: block; }
- main #shorturl h1 span {
- border-bottom: 1px dotted #999;
- }
- main form {
- position: relative;
- width: 100%;
- display: flex;
- flex-direction: column;
- }
- main form input#target {
- position: relative;
- width: 100%;
- height: 72px;
- display: flex;
- padding: 0 84px 0 40px;
- font-size: 20px;
- }
- main form input#target::placeholder {
- font-size: 17px;
- }
- main form p.error {
- font-size: 13px;
- margin-left: 0.5rem;
- }
- main form .target-wrapper p.error {
- font-size: 15px;
- margin-left: 1rem;
- }
- main form .target-wrapper {
- position: relative;
- width: 100%;
- height: auto;
- }
- main form button.submit {
- box-sizing: content-box;
- position: absolute;
- cursor: pointer;
- width: 28px;
- height: auto;
- right: 0;
- top: 16px;
- padding: 4px;
- margin: 0 2rem 0;
- background: none;
- box-shadow: none;
- outline: none;
- border: none;
- }
- main form button.submit:focus,
- main form button.submit:hover {
- outline: none;
- }
- main form button.submit svg.send {
- fill: #aaa;
- animation: fadein 0.3s ease-in-out;
- transition: fill 0.2s ease-in-out;
- }
- main form button.submit:hover svg.send {
- fill: var(--send-icon-hover-color);
- }
- main form button.submit svg.spinner {
- display: none;
- fill: none;
- stroke: var(--send-spinner-icon-color);
- stroke-width: 2;
- }
- main form.htmx-request button.submit svg.send { display: none; }
- main form.htmx-request button.submit svg.spinner { display: block; }
- main form label#advanced {
- margin-top: 2rem;
- align-self: flex-start;
- }
- main form label#advanced input {
- width: 1.1rem;
- height: 1.1rem;
- margin-bottom: 2px;
- }
- #advanced-options {
- display: flex;
- flex-direction: column;
- margin-top: 1.5rem;
- }
- #advanced-options.hidden { display: none; }
- .advanced-input-wrapper {
- width: 100%;
- display: flex;
- align-items: flex-start;
- margin-bottom: 1rem;
- }
- .advanced-input-wrapper label {
- flex: 1 1 0;
- padding-right: 1rem;
- }
- .advanced-input-wrapper label.expire-in { flex: 1 1 34%; }
- .advanced-input-wrapper label.description { flex: 1 1 65%; }
- .advanced-input-wrapper label:last-child { padding-right: 0; }
- .advanced-input-wrapper label input,
- .advanced-input-wrapper label select {
- width: 100%;
- margin-top: 0.5rem;
- }
- /* LINKS TABLE */
- #links-table-wrapper {
- width: 1200px;
- max-width: 95%;
- display: flex;
- flex-direction: column;
- flex: 1 1 auto;
- align-items: flex-start;
- margin: 7rem 0 7.5rem;
- }
- #links-table-wrapper h2 {
- font-weight: 300;
- margin-bottom: 1rem;
- }
- #links-table-wrapper table thead,
- #links-table-wrapper table tbody,
- #links-table-wrapper table tfoot {
- min-width: 1000px;
- }
- #links-table-wrapper tr {
- padding: 0 0.5rem;
- }
- #links-table-wrapper th,
- #links-table-wrapper td {
- flex-basis: 0;
- padding: 1rem;
- }
- #links-table-wrapper td {
- white-space: nowrap;
- font-size: 16px;
- align-items: center;
- }
- #links-table-wrapper table .original-url { flex: 7 7 0; }
- #links-table-wrapper table .created-at { flex: 2.5 2.5 0; }
- #links-table-wrapper table .short-link { flex: 3 3 0; }
- #links-table-wrapper table .views { flex: 1 1 0; justify-content: flex-end; }
- #links-table-wrapper table .actions { flex: 3 3 0; justify-content: flex-end; }
- #links-table-wrapper table .actions button { margin-right: 0.5rem; }
- #links-table-wrapper table .actions button:last-child { margin-right: 0; }
- #links-table-wrapper table td.original-url,
- #links-table-wrapper table td.created-at {
- flex-direction: column;
- align-items: flex-start;
- justify-content: center;
- }
- #links-table-wrapper table td.original-url p.description,
- #links-table-wrapper table td.created-at p.expire-in {
- margin: 0;
- font-size: 14px;
- color: #888;
- }
- #links-table-wrapper table tr.no-links {
- flex: 1 1 auto;
- justify-content: center;
- animation: fadein 0.3s ease-in-out;
- }
- #links-table-wrapper table.htmx-request tbody tr { opacity: 0.5; }
- #links-table-wrapper table tr.loading-placeholder { opacity: 0.6 !important; }
- #links-table-wrapper table tr.loading-placeholder td,
- #links-table-wrapper table tr.no-links td {
- flex: 0 0 auto;
- font-size: 18px;
- font-weight: 300;
- }
- #links-table-wrapper table tr.loading-placeholder svg.spinner {
- width: 1rem;
- height: auto;
- margin-right: 0.5rem;
- stroke-width: 1.5;
- }
- #links-table-wrapper table tr.links-controls { justify-content: space-between; }
- #links-table-wrapper table tfoot tr.links-controls { justify-content: flex-end; }
- #links-table-wrapper table th.search,
- #links-table-wrapper table th.nav {
- flex: 0 0 auto;
- align-items: center;
- }
- #links-table-wrapper table [name="search"] {
- width: auto;
- height: 32px;
- font-size: 14px;
- padding: 0 1.5rem;
- border-radius: 3px;
- border-bottom-width: 2px;
- }
- #links-table-wrapper table [name="search"]::placeholder {
- font-size: 13px;
- }
- #links-table-wrapper table tr.links-controls .checkbox {
- margin-left: 1rem;
- font-size: 15px;
- }
- #links-table-wrapper table .limit,
- #links-table-wrapper table .pagination {
- display: flex;
- align-items: center;
- }
- #links-table-wrapper table button.table-nav { margin-right: 0.75rem; }
- #links-table-wrapper table button.table-nav:last-child { margin-right: 0; }
- #links-table-wrapper table .table-nav-divider {
- height: 20px;
- width: 1px;
- opacity: 0.4;
- background-color: #888;
- margin: 0 1.5rem;
- }
- #links-table-wrapper table tr.edit {
- border-bottom: 1px solid hsl(200, 14%, 98%);
- background-color: #fafafa;
- }
- #links-table-wrapper table tr.edit td {
- width: 100%;
- padding: 2rem 1.5rem;
- flex-basis: auto;
- }
- #links-table-wrapper table tr.edit td form {
- width: 100;
- display: flex;
- flex-direction: column;
- align-items: flex-start;
- }
- #links-table-wrapper table tr.edit td form > div {
- width: 100%;
- display: flex;
- align-items: start;
- }
- #links-table-wrapper table tr.edit label { margin: 0 0.5rem 1rem; }
- #links-table-wrapper table tr.edit label:first-child { margin-left: 0; }
- #links-table-wrapper table tr.edit label:last-child { margin-right: 0; }
- #links-table-wrapper table tr.edit input {
- height: 44px;
- padding: 0 1.5rem;
- font-size: 15px;
- }
- #links-table-wrapper table tr.edit input,
- #links-table-wrapper table tr.edit input + p {
- width: 240px;
- max-width: 100%;
- font-size: 14px;
- text-wrap: wrap;
- text-align: left;
- }
- #links-table-wrapper table tr.edit input[name="target"],
- #links-table-wrapper table tr.edit input[name="description"],
- #links-table-wrapper table tr.edit input[name="target"] + p,
- #links-table-wrapper table tr.edit input[name="description"] + p {
- width: 420px;
- }
- #links-table-wrapper table tr.edit button {
- height: 38px;
- margin-right: 1rem;
- }
- #links-table-wrapper table tr.edit button:last-child { margin-right: 0; }
- #links-table-wrapper table tr.edit form {
- --keyframe-slidey-offset: -5px;
- animation: fadein 0.3s ease-in-out, slidey 0.32s ease-in-out;
- }
- #links-table-wrapper table tr.edit form.no-animation { animation: none; }
- #links-table-wrapper table tr.edit { display: none; }
- #links-table-wrapper table tr.edit.show { display: flex; }
- #links-table-wrapper table tr.edit td.loading { display: none; }
- #links-table-wrapper table tr.edit.htmx-request td.loading { display: block; }
- #links-table-wrapper table tr.edit td.loading svg { width: 16px; height: 16px; }
- #links-table-wrapper table tr.edit form.htmx-request button .reload { display: none; }
- #links-table-wrapper table tr.edit form button .loader { display: none; }
- #links-table-wrapper table tr.edit form.htmx-request button .loader { display: inline-block; }
- #links-table-wrapper table tr.edit form .response p { margin: 2rem 0 0; }
- /* INTRO */
- .introduction {
- width: 1200px;
- max-width: 98%;
- display: flex;
- align-items: center;
- margin: 150px 0 0;
- }
- .introduction .text-wrapper {
- display: flex;
- flex: 1 1 auto;
- flex-direction: column;
- align-items: flex-start;
- margin-top: -32px;
- }
- .introduction h2 {
- font-weight: 300;
- font-size: 28px;
- padding-right: 2rem;
- margin-bottom: 2.5rem
- }
- .introduction img {
- width: 60%;
- flex: 0 0 60%;
- max-width: 100%;
- height: auto;
- }
- /* FEATURES */
- .features {
- display: flex;
- flex-direction: column;
- align-items: center;
- width: 100%;
- flex: 0 0 auto;
- padding: 5rem 0;
- margin: 0;
- background-color: var(--features-bg);
- }
- .features h3 {
- font-weight: 300;
- font-size: 28px;
- margin-bottom: 72px;
- }
- .features ul {
- width: 1200px;
- max-width: 100%;
- flex: 1 1 auto;
- justify-content: center;
- flex-wrap: nowrap;
- display: flex;
- margin: 0;
- padding: 0;
- list-style: none;
- }
- .features ul li {
- max-width: 25%;
- display: flex;
- flex-direction: column;
- align-items: center;
- padding: 0 1.5rem;
- margin: 0;
- }
- .features ul li .icon {
- width: 48px;
- height: 48px;
- display: flex;
- align-items: center;
- justify-content: center;
- border-radius: 100%;
- background-color: var(--color-primary);
- }
- .features ul li .icon svg {
- width: 16px;
- height: auto;
- stroke: white;
- stroke-width: 2px;
- }
- .features ul li h4 {
- margin: 1rem;
- padding: 0;
- font-size: 15px;
- }
- .features ul li p {
- margin: 0;
- padding: 0;
- font-size: 14px;
- font-weight: 300;
- text-align: center;
- }
- /* EXTENSIONS */
- .extensions {
- width: 100%;
- display: flex;
- flex-direction: column;
- align-items: center;
- flex: 0 0 auto;
- flex-wrap: nowrap;
- padding: 5rem 0;
- background-color: var(--extensions-bg);
- color: white;
- }
- .extensions h3 {
- font-size: 28px;
- font-weight: 300;
- margin-bottom: 4rem;
- }
- .extensions .extenstions-wrapper {
- width: 1200px;
- max-width: 100%;
- display: flex;
- flex: 1 1 auto;
- justify-content: center;
- flex-wrap: nowrap;
- }
- .extensions a.extension-button {
- display: flex;
- align-items: center;
- justify-content: center;
- margin: 0 1rem;
- padding: 0.75rem 1.75rem;
- background-color: #eee;
- border: 1px solid #aaa;
- font-size: 14px;
- font-weight: bold;
- text-decoration: none;
- border-radius: 4px;
- outline: none;
- box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
- transition: transform 0.3s ease-out;
- cursor: pointer;
- }
- .extensions a.extension-button:hover {
- transform: translateY(-2px);
- }
- .extensions a.extension-button.chrome { color: #4285f4; }
- .extensions a.extension-button.firefox { color: #e0890f; }
- .extensions a.extension-button svg {
- width: 18px;
- height: auto;
- margin: 0 1rem 2px 0;
- }
- .extensions a.extension-button.chrome svg { fill: #4285f4; }
- .extensions a.extension-button.firefox svg { fill: #e0890f; }
- /* FOOTER */
- footer {
- width: 100%;
- display: flex;
- justify-content: center;
- padding: 1rem 0;
- font-size: 13px;
- text-align: center;
- }
|